【发布时间】:2014-12-01 13:34:56
【问题描述】:
我的 Node.Js 应用程序有时会出现故障(我正在努力解决问题),但同时我有一个脚本(默认来自 WebFaction 托管),如果它没有运行,它应该会重新启动我的应用程序。
但是,它根本不起作用(我得到的是 502 页面,当我手动停止应用程序时也会显示该页面)。我的意思是应用程序可以通过脚本正常启动,但是当应用程序崩溃时,它不会重新启动它,即使下面的脚本每 5 分钟在 cron 上运行一次:
*/5 * * * * ~/webapps/infranodus/bin/start
您知道问题可能是什么以及我该如何解决吗?
下面是脚本:
#!/bin/sh
mkdir -p /home/noduslabs/webapps/infranodus/run
pid=$(/sbin/pidof /home/noduslabs/webapps/infranodus/bin/node)
if echo "$pid" | grep -q " "; then
pid=""
fi
if [ -n "$pid" ]; then
user=$(ps -p $pid -o user | tail -n 1)
if [ $user = "noduslabs" ]; then
exit 0
fi
fi
nohup /home/noduslabs/webapps/infranodus/bin/node /home/noduslabs/webapps/infra$
/sbin/pidof /home/noduslabs/webapps/infranodus/bin/node > /home/noduslabs/webap$
PS 另一件事是,当应用程序崩溃时,我必须通过 ssh 登录我的主机,使用node app 启动应用程序,然后退出它,然后才开始真正起作用。所以看起来脚本实际上没有检测到脚本已关闭的事实,这就是它可能不起作用的原因......
【问题讨论】:
-
有很多工具可以做到这一点(比如“永远”)。你搜索了吗?
-
如果你使用的是 Ubuntu,我建议你看看 Upstart (upstart.ubuntu.com)