我有一个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 ,但我得到以下错误:
我如何克服这个问题?
EDIT ::
似乎在关注的命令运行完毕或返回错误时会调用回调或事件。即使我的命令仍然在后台执行,有没有办法可以获得输出?
答案 0 :(得分:2)
看起来像spawn是处理流的意思,而exec的最大缓冲区为200k。
您的spawn输出只是一个警告:possible EventEmitter memory leak detected