2016-06-25 4 views

ответ

6

Вы можете использовать пакет ps-node.

https://www.npmjs.com/package/ps-node

var ps = require('ps-node'); 

// A simple pid lookup 
ps.lookup({ 
    command: 'node', 
    psargs: 'ux' 
    }, function(err, resultList) { 
    if (err) { 
     throw new Error(err); 
    } 

    resultList.forEach(function(process){ 
     if(process){ 
      console.log('PID: %s, COMMAND: %s, ARGUMENTS: %s', process.pid, process.command, process.arguments); 
     } 
    }); 
}); 

Я считаю, что вы будете смотреть на этом примере. Проверьте сайт, у них есть много других способов использования. Попробуйте.

Просто вы не привязаны к nodejs, из командной строки linux вы также можете сделать ps -ef | grep "YOUR_PROCESS_NAME_e.g._nodejs", чтобы проверить выполняемый процесс.

2

Следующие должны работать. Список процессов будет сгенерирован на основе операционной системы и этот результат будет проанализирован для желаемой программы. Функция принимает три аргумента, каждый из которых является только ожидаемым именем процесса в соответствующей операционной системе.

В моем опыте ps-узел берет WAY слишком много памяти и времени для поиска процесса. Это решение лучше, если вы планируете часто проверять процессы.

const exec = require('child_process').exec 
 

 
function isRunning(win, mac, linux){ 
 
    return new Promise(function(resolve, reject){ 
 
     const plat = process.platform 
 
     const cmd = plat == 'win32' ? 'tasklist' : (plat == 'darwin' ? 'ps -ax | grep ' + mac : (plat == 'linux' ? 'ps -A' : '')) 
 
     const proc = plat == 'win32' ? win : (plat == 'darwin' ? mac : (plat == 'linux' ? linux : '')) 
 
     if(cmd === '' || proc === ''){ 
 
      resolve(false) 
 
     } 
 
     exec(cmd, function(err, stdout, stderr) { 
 
      resolve(stdout.toLowerCase().indexOf(proc.toLowerCase()) > -1) 
 
     }) 
 
    }) 
 
} 
 

 
isRunning('myprocess.exe', 'myprocess', 'myprocess').then((v) => console.log(v))

Смежные вопросы