23

有没有办法使用 Node.js 检查系统上的任意 PID 是否正在运行或存活?假设 Node.js 脚本具有适当的读取权限/proc或 Windows 等效权限。

这可以同步完成:

if (isAlive(pid)) { //do stuff }

或异步:

getProcessStatus(pid, function(status) {
    if (status === "alive") { //do stuff }
}

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

4

3 回答 3

30

您可以调用process.kill(pid, 0)并将其包装在 try/catch 中。

http://nodejs.org/api/process.html#process_process_kill_pid_signal -

“如果目标不存在会抛出错误,作为一种特殊情况,可以使用信号 0 来测试进程是否存在。”

例子:

function pidIsRunning(pid) {
  try {
    process.kill(pid, 0);
    return true;
  } catch(e) {
    return false;
  }
}
于 2014-01-22T23:28:32.907 回答
19

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

npm install is-running

于 2013-02-14T22:07:41.320 回答
-1

我不是这里的专家,但你能不能生成一个子进程来使用命令行工具检查状态?

于 2013-01-18T01:11:35.237 回答