1

我有一个期望脚本,它对另一个盒子执行无密码 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.

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

NodeJS:警告:检测到可能的 EventEmitter 内存泄漏。增加了 11 位听众。使用emitter.setMaxListeners() 增加限制

我该如何克服这个问题?

编辑::

当相关命令完成运行或返回错误时,似乎会调用回调或事件。即使我的命令仍在后台执行,是否有办法获得输出?

4

1 回答 1

2

看起来 spawn 是要走的路,因为它意味着处理流,而 exec 的最大缓冲区为 200k。

您的生成输出只是一个警告:检测到可能的 EventEmitter 内存泄漏

于 2012-12-24T07:09:04.340 回答