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



假设我正在从命令行运行一个进程(不是nodejs应用程序(:

myProcess doSomething --withParam1

我还运行了一个nodejs应用程序,它连接到这个进程(rpc(。

node myApp

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

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

我最终使用process.kill来终止进程,并使用nodejs子进程来重新启动它。

为了在杀死它之前找到进程的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);
}
});
}

相关内容