How to check if an arbitrary PID is running using Node.js?

Zac B picture Zac B · Jan 18, 2013 · Viewed 16k times · Source

Is there some way to check if an arbitrary PID is running or alive on the system, using Node.js? Assume that the Node.js script has the appropriate permissions to read /proc or the Windows equivalent.

This could be done either synchronously:

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

Or asynchronously:

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

Note that I'm hoping to find a solution for this that works with an arbitrary system PID , not just the PID of a running Node.js process.

Answer

Shahar picture Shahar · Jan 23, 2014

You can call process.kill(pid, 0) and wrap it up in a try/catch.

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

"Will throw an error if target does not exist, and as a special case, a signal of 0 can be used to test for the existence of a process."

Example:

function pidIsRunning(pid) {
  try {
    process.kill(pid, 0);
    return true;
  } catch(e) {
    return false;
  }
}