表示されるのは、grep
の標準 stdout バッファーの効果です Glibc 提供。最善の解決策は、--line-buffered
を使用して無効にすることです (GNU grep、他のどの実装がそれをサポートしているか、または同様のものかはわかりません)。
理由について これはいくつかの場合にのみ発生します:
ssh server "tail -f /var/log/server.log | grep test"
サーバー上の引用符でコマンド全体を実行します-したがって、 grep
バッファがいっぱいになるまで待機します。
ssh server tail -f /var/log/server.log | grep test
grep
を実行します 出力 tail
のローカル マシンで ssh チャネル経由で送信されます。
ここで重要な部分は、その grep
です stdin
かどうかに応じて動作を調整します 端末かどうか。 ssh -t
を実行すると 、リモートコマンドは制御端末で実行されているため、リモート grep
これをチェックしてください:multitail
MultiTail を使用すると、ターミナルの複数のウィンドウでログファイルとコマンド出力を監視し、色付け、フィルター処理、およびマージできます。
複数のサーバーでログを追跡するには:
multitail -l 'ssh [email protected] "tail -f /path/to/log/file"' -l 'ssh [email protected] "tail -f /path/to/log/file"'