永远不会正常显示正在运行的进程

我正在为永远在运行的Node.js应用程序编写一个init脚本。 永远是一个守护进程本身,它运行在它下面的节点进程。

我的问题是,当Node.js应用程序崩溃时,初始化脚本不会捕获,因为永远总是返回0。

我永远开始,如下所示: $FOREVER start --pidFile $PIDFILE -al $LOGFILE -ao $OUTFILE -ae $ERRFILE $SERVER

当Node.js启动正常,我做了一个列表,我得到:

 # forever list info: Forever processes running data: uid command script forever pid logfile uptime data: [0] UP0C /usr/bin/node /some/path/here/server.js 27322 27324 /root/.forever/UP0C.log 0:0:6:3.493 

当它崩溃时,我看到:

 # forever list info: Forever processes running data: uid command script forever pid logfile uptime data: [0] QFel /usr/bin/node /some/path/here/server.js 27578 27580 /root/.forever/QFel.log 0:0:1:6.207 

正如你所看到的,几乎没有区别。 当我尾巴在输出中显示的日志文件,我看到节点抛出的错误。 我会看到error: Forever detected script exited with code: 8在最后。

检查失败的节点进程的PID,我看到:

 # ps aux | grep 27580 root 27671 0.0 0.0 103240 840 pts/0 S+ 18:37 0:00 grep 27580 

该过程处于睡眠状态。 为什么不能永远赶上那个睡眠的过程呢? 为什么不直接退出?

换句话说,永远使用,我怎么能检测到永久试图运行的进程失败? 为什么不永远有一个简单的方法来pipe理呢? 本质上来说,pipe理启动和停止节点应用程序并不是永远的事情吗? 检查过程是否真正开始应该是其中的一个基石特征。

你也可以看看永远叫做的NON CLI版本:

 forever-monitor https://github.com/nodejitsu/forever-monitor 

它提供了所有必要的事件来订阅像:

 error [err]: Raised when an error occurs start [process, data]: Raised when the target script is first started. stop [process]: Raised when the target script is stopped by the user restart [forever]: Raised each time the target script is restarted exit [forever]: Raised when the target script actually exits (permenantly). stdout [data]: Raised when data is received from the child process' stdout stderr [data]: Raised when data is received from the child process' stderr