1

更新時にログファイルを読み取るためにtailを使用しており、grepが特定の文字列を返した場合にループを終了したいと考えています。「プログラムで」プロセスを終了または強制終了する方法がわかりません

誰か素晴らしいアイデアがありますか?サンプルスクリプトは次のとおりです。

tail -f /var/log/{system.log,kernel.log} | grep -i "vendor: 0x22b8"

ありがとう :)

4

2 に答える 2

3

あなたはこのように効果的にそれを行うことができます:

tail -f /var/log/{system.log,kernel.log} | awk '
  {print}
  /vendor: 0x22b8/ {exit}
'

awkコマンドは、文字列を最初に検出したときに終了します。tailコマンドは、SIGPIPEメカニズムが原因で、次にパイプに書き込もうとしたときに強制終了されます。

于 2012-09-24T04:29:59.027 に答える
3

grep最大カウントで使用:

tail -f /var/log/{system.log,kernel.log} | grep -i "vendor: 0x22b8" -m 1
于 2012-09-24T04:53:44.010 に答える