Node.js集群主进程重新启动后得到杀死和pgrep?

第一个问题:

在Node.js集群中,我知道如果集群工作者崩溃或被杀死,它会自动启动一个新的实例。 但是如果主进程被kill,那么如果主进程被杀死或者崩溃,我们又怎么让主进程自动启动呢? 我试图杀死主进程,整个集群也被杀死。 无论如何要防止这个?

if (cluster.isMaster) { require('os').cpus().forEach(function () { cluster.fork(); }); cluster.on('exit', function (worker, code, signal) { cluster.fork(); }); } else if (cluster.isWorker) { ... } 

第二个问题:

我想我们可以从process.pidfind主进程。 但没有从Node.js这个信息,并看着pgrep -l节点的输出,我怎么知道哪一个是主进程ID? 有反正我可以标记或命名进程时,我fork(),所以我可以在pgrep命令中find主进程?

 $ pgrep -l node 1420 node 1419 node 1418 node 1417 node 1416 node 1415 node 1414 node 1413 node 1412 node 

更新

在我申请process.title作为@fardjad已经build议在下面,它的作品非常漂亮。 这是pgrep的结果:

  $ pgrep -fl acl 1994 acl_api_worker_8 USER=nam 1993 acl_api_worker_7 USER=nam 1992 acl_api_worker_6 USER=nam 1991 acl_api_worker_5 USER=nam 1990 acl_api_worker_4 USER=nam 1989 acl_api_worker_3 USER=nam 1988 acl_api_worker_2 USER=nam 1987 acl_api_worker_1 USER=nam 1986 acl_api_master SHELL=/bin/bash 

我build议你不要监视集群中的主进程,因为你将无法处理SIGKILL 。 你可以使用暴发户monit永远为此。

关于你的第二个问题,你可以设置进程标题:

 if (cluster.isMaster) process.title = 'master'; ... } 

请参阅文档了解更多信息。