web-dev-qa-db-ja.com

Tail -f + grep?

テールには次のオプションがあります。

-f      The -f option causes tail to not stop when end of file is reached, but rather to wait for additional data to be appended to the
             input.  The -f option is ignored if the standard input is a pipe, but not if it is a FIFO.

テール出力のsomethingのみをgrepしたいです。

tail -f <FILE> | grep <SOMETHING> 

問題は、grepを1回しか実行せずに完了することです。他の出力は発生しません。 -fでgrepを正しく実行するにはどうすればよいですか?

13
Sten Kin

別のSO質問が役立ちます: 連続ストリームを 'grep'する方法?

Grepの行バッファリングモードをオンにします。

tail -f file | grep --line-buffered my_pattern
42
Sunny Patel

これがログファイルの場合、ローテーションされる場合があります。その後、データの提供を停止します。
これは、ファイルが回転しても停止しません。

tail --follow=name /var/log/syslog | grep "some data"
7
Jotne