2012-12-24 152 views
1

我有一个期望脚本,做密码的ssh到另一个对话框并开始命令中使用命令转储文件内容:尾-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中的连续数据流如何利用期望的目标。我试着用产卵,但我得到以下错误:

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

我怎样才能解决这个问题?

编辑::

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

回答

2

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

你重生输出仅仅是一个警示:possible EventEmitter memory leak detected

+0

我尝试添加process.setMaxListeners(0),但仍得到相同的结果。我的NodeJS版本是v0.8.15。即使它是一个警告 - 但我没有在标准输出中获取数据 - 函数child.stdout.on('data',function(data){})中的记录器; - 不会打印在控制台中。 – Prakash