【发布时间】:2012-03-26 21:39:39
【问题描述】:
我有一个自动守护进程并管理它们的监视器。
所以我有这个 node.js 程序,它以某种方式产生另一个进程。我的代码没有使用分叉或类似的东西,它只是有一个使用 setInterval 的无限循环,它可以完成一些数据库工作。
这就是它的运行方式:
node /path/to/program.js >> program.log 2>&1
在此之后,top -bcn1|grep program.js 显示:
24763 ubuntu 20 0 695m 21m 5464 S 0 0.3 0:00.39 node /path/to/program.js
25053 ubuntu 20 0 4264 580 484 S 0 0.0 0:00.01 sh -c node /path/to/program.js >> program.log 2>&1
然后我的进程监视器设置了一个 pid 文件为 25053,所以当我告诉它重新启动程序时它会杀死 25053,再次启动程序,现在上一个命令的输出是:
24763 ubuntu 20 0 695m 21m 5464 S 0 0.3 0:00.39 node /path/to/program.js
23520 ubuntu 20 0 630m 21m 5464 S 0 0.3 0:00.39 node /path/to/program.js
23012 ubuntu 20 0 4264 580 484 S 0 0.0 0:00.01 sh -c node /path/to/program.js >> program.log 2>&1
那么我该如何让它“子”进程或者它是什么也被杀死呢?
我觉得这是节点中的基本内容,但我还没有找到答案。
【问题讨论】:
-
我还不确定这是否可行。见this pull request。
-
即使我没有生成或分叉任何东西也适用吗?
-
误解了这个问题。我不相信它确实适用。对不起。
-
我可能弄错了,但“其他”进程不只是显示主节点脚本输出的外壳,等待它完成吗?