Question

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.

Was it helpful?

Solution 2

I needed to check for running pid's in a project as well. I took this answer of using kill -0 <PID> and wrapped it up in a module called is-running https://npmjs.org/package/is-running

npm install is-running

OTHER TIPS

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;
  }
}

I'm not an expert here, but could you not spawn a child process to check the status with a command line tool?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top