如何使用Node.js检查任意PID是否正在运行?

Zac*_*c B 18 pid platform-independent node.js

有没有办法使用Node.js检查系统上的任意PID是运行还是活动?假设Node.js脚本具有相应的读取权限/proc或Windows等效权限.

这可以同步完成:

if (isAlive(pid)) { //do stuff }
Run Code Online (Sandbox Code Playgroud)

或异步:

getProcessStatus(pid, function(status) {
    if (status === "alive") { //do stuff }
}
Run Code Online (Sandbox Code Playgroud)

请注意,我希望找到一个适用于任意系统PID的解决方案,不仅仅是运行Node.js进程的PID.

Noa*_*oah 17

我还需要在项目中检查运行pid的情况.我把这个使用的答案kill -0 <PID>包装在一个名为is-running https://npmjs.org/package/is-running的模块中.

npm install is-running

  • 我相信应该选择一个干净的解决方案(不需要另一个 npm 模块)。 (2认同)

小智 17

好像你可以调用process.kill(pid,0)并将它包装在try/catch中.

http://nodejs.org/api/process.html#process_process_kill_pid_signal - "如果目标不存在,将抛出错误,作为特殊情况,可以使用0的信号来测试进程是否存在."