杀死node.js服务器

时间:2012-03-26 21:39:40

标签: node.js process

我有一个自动守护进程并管理它们的监视器。

所以我有这个node.js程序以某种方式产生另一个进程。我的代码不使用forking或类似的东西,它只是使用setInterval进行无限循环,它可以完成一些db工作。

这就是它的运行方式:

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

我的进程监视器然后设置一个25053的pid文件,所以当我告诉它重启程序时它会杀死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

那么我该如何制作它以使“儿童”过程或其它任何东西也被杀死?

我觉得这是节点中的基本内容,但我还没有找到答案。

1 个答案:

答案 0 :(得分:0)

你需要监听离开事件的退出事件......

尝试:

var children = [];
//keep track of the child processes...
process.on('exit',function(){
    children.forEach(function(child){
        child.kill('SIGINT');
    });
});

注意:在孩子们中,你会想听'SIGINT'等。

请参阅:http://nodejs.org/api/child_process.html