したがって、Linuxでログファイルを監視する必要があります。コンテンツをキャットし(以前のすべてのエントリを表示するため)、同時にgrepを使用してログから表示したいものを除外しながら、ログファイルをテールします。 。また、catコマンドがエントリの表示を停止した場所でテールが続くと便利です。
どうすればそれを行うことができますか?
編集:
私の質問をもう少し明確にするために、これが私が欲しいものです:
log.txt:
Line 1 <--- Starting from here is what lines I need
Line 2
Line 3
Line 4
Line 5 <--- Here is where the tail command will start displaying
Line n - 1
Line n <--- Here is where the tail command will continue to go
これらすべてを取得してgrepできる必要があります。
これがあなたが探しているものであるかどうかはわかりませんが、あなたはこれを試すかもしれません:
grep "pattern you are looking for" log.txt;tail -n 0 -f log.txt | grep "pattern you are looking for"
2つのコマンドを次々に呼び出しています。最初にログファイルから関心のあるパターンをgrepし、次にファイルの最後でtail -fを開始して、出力をgrepにリダイレクトします。
ただし、1つのコマンドのみを使用して実行することをお勧めします。-nパラメーター(+1は最初の行からの意味)を使用して、テールによって表示される行数を指定できます。
tail -n +1 -f log.txt | grep "pattern you are looking for"
私は次のようなものに行きます
tail -f log_file | grep -E "^|your_pattern"
2つのタブを開いてテストします。
最初に、このコマンドを実行します
while :; do echo "$v"; ((v++)); sleep 1; done > mytest
つまり、ファイルに毎秒数値を追加する連続ストリームを生成しますmytest
次に、他のタブで、
tail -f mytest | grep -E "^|2"
つまり、ファイルを継続的にtail
し、次の2つのパターンでgrep
を実行します。^
すべてに一致し2
。こちらです、 ^
はすべての行に一致し、すべての行が表示されます。2
強調したい行にちょうど一致します。このトリックの詳細については、 フィルターの代わりに強調表示される「Grep」 を参照してください。