2012-12-24 79 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