我已经尝试了一切。即使尝试在/etc/rc.local
中添加永久启动代码也没有用。
当我在@reboot
中使用/etc/rc.local
关键字时,表示无法找到@reboot
。
所以我回到使用crontab
这是我的crontab脚本。除重启之外,所有其他crontabs都在工作。在syslog
中,它说
Jun 4 09:51:12 ip-172-31-28-35 /usr/sbin/irqbalance: Balancing is ineffective on systems with a single cache domain. Shutting down
Jun 4 09:51:12 ip-172-31-28-35 cron[959]: (CRON) STARTUP (fork ok)
Jun 4 09:51:12 ip-172-31-28-35 cron[959]: (CRON) INFO (Running @reboot jobs)
Jun 4 09:51:12 ip-172-31-28-35 CRON[1005]: (ubuntu) CMD (/usr/bin/sudo -u ubuntu /usr/local/bin/forever start home/ubuntu/chat2/index.js)
这表明我的cron选项卡中的reboot命令正在运行但由于某种原因永远不会启动节点。重新启动后,我会永远运行列表并显示No forever processes running
我假设问题是以某种方式使用节点和永远路径。我是新手,并且不知道在crontab中使用此语句的确切路径。
我也尝试了以下内容:
@reboot /usr/local/bin/forever start -c /usr/local/bin/node /home/ubuntu/chat2/index.js
和
@reboot /usr/local/bin/forever start /home/ubuntu/chat2/index.js
这些都不起作用。
如果我运行which forever
,则说
/usr/local/bin/forever
如果我运行which node
,则说
/usr/local/bin/node
如果我获得index.js应用文件的完整路径,请在chat2目录中执行readlink -f index.js
,
/home/ubuntu/chat2/index.js
伙计们帮助我。我只想在每次系统重新启动时运行此命令..我想启动我的节点应用程序。当我手动cd到chat2 directoy时,以下行完美。我希望这可以在重启时使用。
forever -m5000 -w start index.js
请帮助,谢谢!
答案 0 :(得分:0)
您可以使用代码而不是使用cron创建服务。实际上我更喜欢这样,因为您可以随时停止或启动它,您也可以在系统重启或启动时运行它。
所以:
1-在/etc/init.d/name_of_file
中创建服务#!/bin/bash
#/etc/init.d/name_of_file
### BEGIN INIT INFO
# Provides: name
# Required-Start: $syslog
# Required-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: add service
# Description:
#
### END INIT INFO
# Some things that run always
case "$1" in
start)
echo "Starting app_name "
touch /var/lock/app_name
cd /where/is/your/file
node index.js &
;;
stop)
echo " Stopping "
rm /var/lock/app_name
sudo pkill -f node
;;
status)
if [ -e /var/lock/app_name ]
then
echo "app_name is running"
else
echo "app_name is not running"
fi
;;
*)
echo "Usage:service app_name{start|stop|status}"
exit 1
;;
esac
exit 0
之后,您已经创建了一个运行nodejs应用程序的服务。
您必须为该脚本提供运行权限
chmod +x /etc/init.d/app_name
现在,您唯一要做的就是将其配置为在启动时运行。
执行命令
sudo update-rc.d app_name defaults
然后每次重启计算机时,服务都会自动启动。
答案 1 :(得分:0)
建议将stdout / stderr重定向到文件以调试crontab中的脚本无法正常工作的原因:
/ usr / local / bin / forever start -c / usr / local / bin / node /home/ubuntu/chat2/index.js> /tmp/forever.log 2>& 1&
重启后请参阅日志文件了解详细信息。
您也可以像永远一样尝试pm2,但支持buildin系统启动脚本生成,并会在重启后启动您的应用。