【问题标题】:Automatically restart a Node.Js app [duplicate]自动重启 Node.Js 应用程序 [重复]
【发布时间】: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 启动应用程序,然后退出它,然后才开始真正起作用。所以看起来脚本实际上没有检测到脚本已关闭的事实,这就是它可能不起作用的原因......

【问题讨论】:

标签: linux node.js cron


【解决方案1】:

只需使用forever

[sudo] npm install -g forever

然后,永远启动您的应用程序:

forever start app.js

您的脚本将在崩溃/退出时重新启动,您可以使用永久运行多个 node.js 应用程序。

要手动停止/重新启动您的应用程序,您可以使用:

forever restart [id]
forever stop [id]

此外,forever 会将应用程序的日志存储在 ~/.forever 中。您可以使用以下方法轻松读取应用程序的日志:

forever logs # list all logs
forever logs [id] # Tails the logs of id

forever at npm

【讨论】:

  • 谢谢!如果应用程序崩溃确实会永远将日志存储在某个地方?
  • 是的,永远将它的日志存储在一个像 ~/.forever/ 这样的文件夹中,当你启动应用程序或使用 forever list 时,它会告诉你它存储日志的文件。
猜你喜欢
  • 1970-01-01
  • 2012-06-10
  • 2015-08-18
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-06
  • 1970-01-01
相关资源
最近更新 更多