求个 child_process 自动重启(crash 不会引起主进程退出,并自动重启)的代码示例

2014-05-26 22:25:29 +08:00
 WildCat
2802 次点击
所在节点    Node.js
7 条回复
heiher
2014-05-27 07:16:32 +08:00
#!/bin/bash

while true; do
# run your app in foreground
done
WildCat
2014-05-27 07:21:35 +08:00
@heiher 抱歉,BAE环境,只能纯node实现
rekey
2014-05-27 15:00:07 +08:00
代码运行在
try{}catch(e){}
里试试?
withinthefog
2014-05-27 18:07:47 +08:00
WildCat
2014-05-27 18:09:07 +08:00
@withinthefog BAE环境 似乎不能用这个。
withinthefog
2014-05-28 10:13:11 +08:00
cluster.on('exit', function(worker, code, signal) {
console.log('worker %d died (%s). restarting...',
worker.process.pid, signal || code);
cluster.fork();
});

要纯手写的话大概就是这个样子了,不知道你的child_process是不是用cluster模块手工创建的
可以参考node.js官方的cluster模块文档:
http://nodejs.org/api/cluster.html#cluster_cluster
Honwhy
2014-06-19 09:42:00 +08:00
楼主你需要的是这个么?
```
var cp = require('child_process');

var worker;

function spawn(server, config) {
worker = cp.spawn('node', [ server, config ]);
worker.on('exit', function (code) {
if (code !== 0) {
spawn(server, config);
}
});
}

function main(argv) {
spawn('server.js', argv[0]);
process.on('SIGTERM', function () {
worker.kill();
process.exit(0);
});
}

main(process.argv.slice(2));
```
[七天学会NodeJS](http://nqdeng.github.io/7-days-nodejs/)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/114377

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX