【问题标题】:Using Cron to make Forever.js Reboot-Proof使用 Cron 制作 Forever.js Reboot-Proof
【发布时间】:2014-01-16 01:35:52
【问题描述】:

我正在尝试使用 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) 一切正常。

【问题讨论】:

  • 打电话给/usr/local/bin/forever start ...不行吗?
  • 没有任何变化(/root/var/www/mysite/starter.sh: /usr/local/bin/forever: 未找到)

标签: node.js bash ubuntu cron forever


【解决方案1】:

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

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

但是,如果您没有运行 ubuntu 或类似软件,则每个环境都有自己的启动/停止服务类型。在 Mac OS X 上,您可以改用 launchdlaunchd 有很多功能,但希望这篇文章可以指导您正确的方向:

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

【讨论】:

    【解决方案2】:

    缺失的部分:

    n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local
    

    这一系列命令永远放在 /usr/local/bin/ 中。

    【讨论】:

      猜你喜欢
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      • 2013-11-03
      • 2014-08-01
      • 1970-01-01
      • 2012-09-30
      相关资源
      最近更新 更多