如何在节点服务器上获取所有当前正在运行的进程?我尝试使用ps-node(https://www.npmjs.com/package/ps-node)但无法获取列表。
我在C#中寻找类似以下命令的内容:
// Get all processes running on the local computer.
Process[] localAll = Process.GetProcesses();
有可能吗?
答案 0 :(得分:1)
以下是使用上述forever工具gnu awk和内置child_process节点库的示例:
var spawn = require('child_process').spawn,
forever = spawn('forever', ['list', '--plain']),
awk = spawn('awk', ['NR>2{print $4,$5,$6,$7,"\t",$9}']);
forever.stdout.on('data', function (data) {
awk.stdin.write(data);
});
forever.stderr.on('data', function (data) {
console.log('forever stderr: ' + data);
});
forever.on('close', function (code) {
if (code !== 0) {
console.log('forever process exited with code ' + code);
}
awk.stdin.end();
});
awk.stdout.on('data', function (data) {
// data is your result as Buffer
// print data as string
console.log('' + data);
});
awk.stderr.on('data', function (data) {
console.log('awk stderr: ' + data);
});
awk.on('close', function (code) {
if (code !== 0) {
console.log('awk process exited with code ' + code);
}
});
这里发生的事情主要是:
$ forever list --plain | awk '{NR>2{print $4,$5,$6,$7,"\t",$9}}'
当然,awk打印的变量取决于forever list
输出......为了测试正确的解决方案,我将从打印$0
开始获取整个输出,然后将其修剪下来以便它仅报告您需要的信息。