-
Notifications
You must be signed in to change notification settings - Fork 396
03 如何创建守护进程
孙正华 edited this page Jul 26, 2018
·
2 revisions
默认情况下,当程序遇到异常或者主动调用 process.exit() 会导致应用程序退出,使用守护进程可以监听进程状态,在退出时自动重新启动,以保持进程的持久运行。
https://github.com/eshengsky/iBlog2/blob/master/daemon.js#L20-L31
// 监听退出事件
cluster.on('exit', (worker, code, signal) => {
if (code !== 0) {
console.error(`worker:${worker.process.pid} 异常退出(${signal || code}),5s后尝试重启...`);
setTimeout(() => {
const new_worker = cluster.fork();
console.log(`worker:${new_worker.process.pid} 正在运行...`);
}, 5000);
} else {
console.log(`worker:${worker.process.pid} 正常退出!`);
}
});
注意 exit code 为 0 表示正常情况的退出。