假设我正在从命令行运行一个进程(不是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);
}
});
}