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