Я запускаю node.js в linux, from node.js, как проверить, запущен ли процесс из имени процесса? В худшем случае я использую child_process, но задаюсь вопросом, лучше ли?node.js, как проверить процесс, запущенный именем процесса?
Спасибо!
Я запускаю node.js в linux, from node.js, как проверить, запущен ли процесс из имени процесса? В худшем случае я использую child_process, но задаюсь вопросом, лучше ли?node.js, как проверить процесс, запущенный именем процесса?
Спасибо!
Вы можете использовать пакет 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"
, чтобы проверить выполняемый процесс.
Следующие должны работать. Список процессов будет сгенерирован на основе операционной системы и этот результат будет проанализирован для желаемой программы. Функция принимает три аргумента, каждый из которых является только ожидаемым именем процесса в соответствующей операционной системе.
В моем опыте 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))