Skip to content

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 表示正常情况的退出。