Node.js grep进程(但不包括self)

时间:2011-07-05 21:05:59

标签: node.js grep

所以,从文档中,如果进程存在与否,我可以grep。但如果没有,我会得到一个归来的自我结果。我可以通过执行实际的语句来做到这一点,但是node.js的方式怎么样?!我尝试了多个greps,但也许有人已经这样做了......我只需要添加一个额外的| grep -v |,基本上。

var util   = require('util'),
    spawn = require('child_process').spawn,
    ps    = spawn('ps', ['ax']),
    grep  = spawn('grep', ['MyProcessThatIsNotRunning']);


ps.stdout.on('data', function (data) {
  grep.stdin.write(data);
});

ps.stderr.on('data', function (data) {
  console.log('ps stderr: ' + data);
});

ps.on('exit', function (code) {
  if (code !== 0) {
    console.log('ps process exited with code ' + code);
  }
  grep.stdin.end();
});

grep.stdout.on('data', function (data) {
  console.log(data.toString());
});

grep.stderr.on('data', function (data) {
  console.log('grep stderr: ' + data);
});

grep.on('exit', function (code) {
  if (code !== 0) {
    console.log('grep process exited with code ' + code);
  }
});

2 个答案:

答案 0 :(得分:3)

为什么不使用child_prosses.exec

var cmdline = 'ps ax | grep -v grep | grep MyProcessThatIsNotRunning';
require('child_process').exec(cmdline, function (error, stdout, stderr) {
    if (error)
    {
        console.error(error); process.exit(1);
    }
    // parse 'ps ax | grep -v grep | grep MyProcessThatIsNotRunning' result here
    console.log(stdout);
});

答案 1 :(得分:0)

对于上述答案,您可以尝试

var cmdline = 'ps ax | grep MyProcessThatIsNotRunnin[g]';

grep  = spawn('grep', ['MyProcessThatIsNotRunnin[g]']); 
//should work didn't test though.. :)

方括号是找不到grep的技巧。