ログ ファイルが大きくなるにつれてログ ファイルを追跡し、パターンを検索してそれに反応するループがあります。問題は、ループが入力を取得するのを遅らせるバッファにぶつかっていることtail -fですgrep。
動作しません
while read l; do echo "l = |$l|"; done < <(tail -f $logfile | grep $pattern)
バッファがいっぱいになり、ループを介して行が一度に処理される前に、3〜4回(realfile.logは〜2K行です)セットアップ$logfileするfifo必要があります。cat realfile.log > $logfile
リダイレクトされた stdin からを削除するgrep $patternと、ファイルは期待どおりに処理されます。
動作します
while read l; do echo "l = |$l|"; done < <(tail -f $logfile)
また動作します
while read l; do echo "l = |$l|"; done < <(tail $logfile | grep $pattern)
それは書き込みでtailはありませんか?fsync()'ing-f