我正在尝试使用bash脚本(名为starter.sh)在System Restarts上执行Forever.js来检查我的应用是否正在运行:
#!/bin/sh
if [ $(ps -e -o uid,cmd | grep $UID | grep node | grep -v grep | wc -l | tr -s "\n") -eq 0 ]
then
export PATH=/usr/local/bin:$PATH
forever start --sourceDir ~/var/www/mysite app.js >> ~/var/www/mysite/log.txt 2>&1
fi
然后我将以下代码添加到crontab:
@reboot ~/var/www/mysite/starter.sh
但重新启动系统后(sudo reboot)Forever.js无法启动。 在日志文件中,我收到以下消息:
/root/var/www/mysite/starter.sh: 6:
/root/var/www/mysite/starter.sh: forever: not found
有什么想法吗?
P.S。 如果我从命令行调用Forever(永远启动--sourceDir~ / var / www / mysite app.js)都可以正常工作。
答案 0 :(得分:2)
我会调查upstart
之类的内容,以便在重启时启动/停止节点脚本。这篇文章详细介绍了如何完成您所追求的目标,您可以根据自己的需要简化设置:
但是如果你没有运行ubuntu或类似的东西,每个环境都有自己的启动/停止服务类型。在Mac OS X上,您可以使用launchd
代替。 launchd
有很多功能,但希望这篇文章可以指导您朝着正确的方向发展:
答案 1 :(得分:0)
缺失的部分:
n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local
这一系列命令永远存入/ usr / local / bin /.