我的Node.Js应用程序有时会出现故障(我正在努力解决问题)但同时我有一个脚本(默认来自WebFaction托管),如果它是#39,它应该重启我的应用程序;没有跑。
然而,它根本不起作用(我改为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$
node app
启动应用程序然后退出它,然后才开始真正起作用。所以看起来剧本实际上并没有发现脚本失效的原因,这就是为什么它可能不起作用......
答案 0 :(得分:9)
只需使用forever
即可[sudo] npm install -g forever
然后,永远启动你的应用程序:
forever start app.js
您的脚本将在崩溃/退出时重新启动,您可以永久使用多个node.js应用程序。
要手动停止/重启您的应用程序,您可以使用:
forever restart [id]
forever stop [id]
此外,永远将您的应用程序的日志存储在〜/ .forever中。您可以使用以下方法轻松读取应用程序的日志:
forever logs # list all logs
forever logs [id] # Tails the logs of id