特定の条件が満たされた場合に無限に実行されるコマンドを自動的に終了させる方法は?

特定の条件が満たされた場合に無限に実行されるコマンドを自動的に終了させる方法は?

特定のデータを無限に生成するコマンドをコマンドラインで実行していますが、特定のビットのデータを探していてgrep探してみました。データを取得したら、コマンドは自動的に終了したいと思います。どうやってこれを達成できますか?

注1:kill $$AND演算はgrepコマンドを終了しません。

ノート2:私はこれを見た質問、私の場合は動作しないようです。

答え1

この試み

loud_program | grep --max-count=NUM

その後、私が知っている限り、切断された最後に書き込みを行うloud_program受信が順番に終了することがあります。あなたのプログラムで試してみてください。これがすべてのプログラムで動作するかどうかはわかりません。SIGPIPEloud_program

答え2

たとえば、結果をポケットベルにパイプすることができますless。入力lessバッファは、コマンドがあまりにも多くのデータを生成するのを防ぎ(つまり、下に下がるまである時点でブロックされる)、ページャを終了すると、コマンドは次のようになります。パイプの破損により破損し、自動的にシャットダウンします。何らかの理由でデータが生成されず(パイプライン化された)コマンドがまだ実行されている場合は、Ctrl-Cと入力してコマンドを終了できます。

関連情報