node.js - 使用 Cron 制作 Forever.js Reboot-Proof

标签 node.js bash ubuntu cron forever

我正在尝试使用 bash 脚本(名为 starter.sh)在系统重启时执行 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

任何想法?

附言
如果我从命令行调用 Forever (forever start --sourceDir ~/var/www/mysite app.js) 一切正常。

最佳答案

我会研究类似 upstart在重新启动时启动/停止您的 Node 脚本。这篇文章详细介绍了如何做你所追求的,你可以根据你的需要简化设置:

https://www.exratione.com/2013/02/nodejs-and-forever-as-a-service-simple-upstart-and-init-scripts-for-ubuntu/

但是如果你没有运行 ubuntu 或类似的,每个环境都有自己的启动/停止服务类型的东西。在 Mac OS X 上,您可以使用 launchd反而。 launchd有很多功能,但希望这篇文章可以指导您朝着正确的方向前进:

http://paul.annesley.cc/2012/09/mac-os-x-launchd-is-cool/

关于node.js - 使用 Cron 制作 Forever.js Reboot-Proof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20817989/

相关文章:

linux - Ubuntu sudo错误

javascript - 无法获取标题 Angular 6

node.js - 如何在node.js服务器中调试socket.io的模拟浏览器客户端

java - 组匹配正则表达式在 Java 中失败

python - 用 Python 的 Popen 替换 Bash 风格的进程

ubuntu - ldconfig 无法识别目录中的新库

mysql - NodeJS mysql 异步查询

Node.JS:查看进程为何仍在运行的工具?

bash - 如何确定 openssl.cnf 的默认位置?

django - 如何在 Web 服务器上设置 PYTHONPATH