捕获进程的连续输出

时间:2012-12-24 06:46:22

标签: node.js

我有一个expect脚本,可以对另一个盒子执行无密码ssh,并使用命令启动一个转储文件内容的命令: tail -f ...

由于我使用-f tail选项,命令会等待,直到将新数据添加到文件中并立即转储它。

我正在使用exec从我的NodeJS脚本启动脚本:

var child = exec('script.sh process1 process2', function(err, stdout, stderr) {
if(err)
{
   console.log("Error");
   return;
}
var result;
while((result = stdout.toString.split("\r\n")) != null)
{
  logger.info(result);
}
}
});

但我在控制台日志中遇到错误:

Error in expect script ::Error: maxBuffer exceeded.

由于输出是stdout流上的连续数据,我如何利用所需的目标。我尝试使用 spawn ,但我得到以下错误:

NodeJS : warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit

我如何克服这个问题?

EDIT ::

似乎在关注的命令运行完毕或返回错误时会调用回调或事件。即使我的命令仍然在后台执行,有没有办法可以获得输出?

1 个答案:

答案 0 :(得分:2)

看起来像spawn是处理流的意思,而exec的最大缓冲区为200k。

您的spawn输出只是一个警告:possible EventEmitter memory leak detected