増えるログをリアルタイムで確認しなければならず、問題点を発見することになりました。逃す一部の行(正確にどの行なのか不明)は、または、およびtail -f
を使用します。tailf
grep
cut
grep
特定の単語を含む行をフィルタリングし、cut -c -NUM
一部の行が非常に長いため、端末ウィンドウで改行したくないので、これを使用します。
以下は、次のサンプルログを表示する最小限の例です。「ラインN」行、フィルタの単語「ワイヤー」、この場合、すべての行がありません(明らかに^C
プロセスを終了しました)。
$ tail -n 3 -f log
13th line
14th line
15th line
^C
$ tail -n 3 -f log | grep --color=never 'line'
13th line
14th line
15th line
^C
$ echo $COLUMNS
100
$ tail -n 3 -f log | grep --color=never 'line' | cut -c -$COLUMNS
^C
この問題が発生しています。tail -f
(またはtailf
)とのみgrep
結合されます。cut
。パイプのgrep
真ん中や端に使用しないと、行はcut
抜けません。またはtail -f
に変更すると問題ありません。すべての可能な状況を見ることができます。tail
cat
この長い例。
Ubuntu 13.04を使用していますが、GNUコアツール(tail
、cut
)バージョン8.20およびGNU grep2.14。
答え1
あなたの例では、問題はとの間grep
のバッファリングですcut
。バッファがいっぱいになった場合にのみ、データはパイプの下に渡されます(私のシステムでは4kB)。
各行の後にバッファをフラッシュするように--line-buffered
追加してみてください。grep