Node.js获取所有正在运行的进程

时间:2015-11-07 13:36:16

标签: node.js process

如何在节点服务器上获取所有当前正在运行的进程?我尝试使用ps-node(https://www.npmjs.com/package/ps-node)但无法获取列表。

我在C#中寻找类似以下命令的内容:

// Get all processes running on the local computer.
Process[] localAll = Process.GetProcesses();

有可能吗?

1 个答案:

答案 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开始获取整个输出,然后将其修剪下来以便它仅报告您需要的信息。