从 nodejs 应用程序中重新启动外部进程 (linux)

Restart an external process from within a nodejs app (linux)

假设我是 运行 命令行进程(不是 nodejs 应用程序):

myProcess doSomething --withParam1

我也是运行一个连接到这个进程(rpc)的nodejs应用程序。

node myApp

myProcess 将随机无提示地无法正常工作而不会崩溃,myApp 将检测到它。我需要 myApp 才能重新启动 myProcess(杀死它并重新启动)。在我重新启动 myProcess 之后,myApp 也将使用 pm2 自行重启(我已经在处理 nodejs 应用程序的 pm2 重新启动部分 - 我的问题是我无法使用 pm2 重新启动 myProcess 因为它不是 nodejs 应用程序)。另外,我无法更改 myProcess 的代码,因为它是第 3 方软件。

如何从我的 nodejs 应用程序重新启动外部进程?

我最终使用 process.kill to kill the process and nodejs child process 重新启动它。

为了在杀死进程之前找到进程的 pid,我使用了这个:

const childProcess = require('child_process');

function printPid() {
    childProcess.exec('pidof -s myProcess', function(error, stdout, stderr) {
        if (error) {
            console.log(error);
        } else {
            console.log(stdout);
        }
    });
}