gpt4 book ai didi

node.js - 永远无法正确显示正在运行的进程

转载 作者:太空宇宙 更新时间:2023-11-03 22:37:26 25 4
gpt4 key购买 nike

我正在为永远运行的 Node.js 应用程序编写一个初始化脚本。 Forever 本身就是一个守护进程,在其下运​​行 Node 进程。

我的问题是,当 Node.js 应用程序崩溃时,init 脚本无法捕获该情况,因为永远总是返回 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

正如您所看到的,几乎没有区别。当我跟踪输出中显示的日志文件时,我看到 Node 抛出的错误。我会在最后看到错误:永远检测到脚本退出,代码为:8

检查失败的Node进程的pid,我看到:

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

该进程处于休眠状态。为什么不永远捕获这一点,那个正在 sleep 的进程是什么?为什么它不直接退出?

换句话来说,使用forever,我怎样才能检测到forever尝试运行的进程失败了?为什么永远没有一种简单的方法来管理它?本质上,forever 不就是为了管理 Node 应用程序的启动和停止而设计的吗?检查进程是否实际启动应该是基础功能之一。

最佳答案

您还可以看一下名为 forever 的非 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

关于node.js - 永远无法正确显示正在运行的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24394122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com