捕获stream程的连续输出

我有一个期望的脚本,无密码的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. 

由于输出是标准输出stream中的连续数据,我如何利用所需的目标。 我尝试使用产卵,但我得到下面的错误:

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

我怎样才能克服这个问题?

编辑::

看起来像callback或事件将被调用时,有关的命令已经完成运行或返回一个错误。 有没有办法可以得到输出,即使我的命令仍然在后台执行?

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

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