1

別のボックスにパスワードなしの 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を使用してみましたが、以下のエラーが発生します。

NodeJS : 警告: EventEmitter のメモリ リークが検出された可能性があります。11人のリスナーが追加されました。制限を増やすには、emitter.setMaxListeners() を使用します

どうすればこの問題を克服できますか?

編集::

関連するコマンドの実行が終了したとき、またはエラーが返されたときに、コールバックまたはイベントが呼び出されるようです。コマンドがまだバックグラウンドで実行されていても、出力を取得する方法はありますか?

4

1 に答える 1