我有一个期望脚本,它可以无密码 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 但出现以下错误:
如何解决这个问题?
编辑::
当相关命令完成运行或返回错误时,似乎会调用回调或事件。即使我的命令仍在后台执行,是否有办法获得输出?
最佳答案
看起来spawn是正确的选择,因为它意味着处理流,而exec的最大缓冲区为200k。
您的生成输出只是一个警告:possible EventEmitter memory leak detected
关于node.js - 捕获流程的连续输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14018038/