我正在使用child_process.spawn()从我在Ubuntu上运行的Node.JS应用程序启动脚本。据我所知,标准分叉或生成的* nix进程通常在父进程死亡时死亡,但是当从Node.JS生成进程时,它们似乎在我的应用程序崩溃时被杀死,或者被ctrl-中止c等。
为什么会这样,有没有办法解决这个问题?我似乎无法在child_process API中找到任何明显的选项。
我的应用程序启动了一些应该在后台运行的长时间运行的任务,如果我的节点服务器因某些其他原因崩溃或重新启动,我不想中断任务,而是我想要节点服务器回来并优雅地恢复监控那些正在运行的任务的进度。
答案 0 :(得分:20)
您需要设置分离选项
如果设置了分离选项,则子进程将成为 新流程组的领导者。这使得孩子可以 在父退出后继续运行。
var child = spawn('prg', [], {
detached: true,
stdio: [ 'ignore', out, err ]
});