我在 linux 中运行 node.js,从 node.js 如何从进程名称检查进程是否正在运行?最坏的情况我使用 child_process,但想知道是否有更好的方法?
谢谢 !
原文由 user3552178 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在 linux 中运行 node.js,从 node.js 如何从进程名称检查进程是否正在运行?最坏的情况我使用 child_process,但想知道是否有更好的方法?
谢谢 !
原文由 user3552178 发布,翻译遵循 CC BY-SA 4.0 许可协议
d_scalzi 回答的代码略有改进。使用回调而不是承诺的功能,只有一个变量查询和开关而不是 if/else。
const exec = require('child_process').exec;
const isRunning = (query, cb) => {
let platform = process.platform;
let cmd = '';
switch (platform) {
case 'win32' : cmd = `tasklist`; break;
case 'darwin' : cmd = `ps -ax | grep ${query}`; break;
case 'linux' : cmd = `ps -A`; break;
default: break;
}
exec(cmd, (err, stdout, stderr) => {
cb(stdout.toLowerCase().indexOf(query.toLowerCase()) > -1);
});
}
isRunning('chrome.exe', (status) => {
console.log(status); // true|false
})
原文由 musatin 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2.7k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
2 回答1.3k 阅读
2 回答678 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.2k 阅读
您可以使用 ps-node 包。
https://www.npmjs.com/package/ps-node
我相信你会看到这个例子。查看该站点,它们还有很多其他用途。试试看。
万一您没有绑定到 nodejs,您也可以从 linux 命令行执行
ps -ef | grep "YOUR_PROCESS_NAME_e.g._nodejs"
来检查正在运行的进程。