複数のファイルをtail -fし、単一の出力から各ファイルを個別にgrepする方法は?

複数のファイルをtail -fし、単一の出力から各ファイルを個別にgrepする方法は?

複数のログファイル(Webサーバー関連、さまざまなerror_log、access_logなど)があり、リアルタイムで監視したい(最新のアップデートを確認するなど)。各ファイルをフィルタリングするには、別の文字列を使用するか、フィルタリングなしで使用する必要があります。個別に。

ログファイルセットがあるとしましょう。file1.log file2.log file3.log file4.log file5.log

file1.log file2.log file3.log必要な最初の3つのファイル文字列によるフィルタリングstringユーザー名のパスまたは一部を表します。

file4.log file5.log最後の2つのファイルを見なければなりません。フィルタリングなしつまり、更新をそのまま表示します。

私が知っているのは、tail -f file1.log file2.log file3.log | grep stringこれを使用して、区切り文字で区切られた3つのファイルすべての希望の出力を提供できることです==> fileX <==。私は最後の2つのファイルに同じ方法を使用しましたtail -f file4.log file5.log。これは私に必要なものを提供しますが、これは別のコマンドです。

しかし、これら2つのコマンドを組み合わせて端末からリアルタイム出力を取得する方法はわかりません。

私はセミコロンなどで;区切られた&&2つのコマンドを実行してみましたが、期待どおりに動作しませんでした。

私の質問はtail -ftail -fファイル区切り文字を使用した高度なフィルタリングを使用して、複数のコマンドを単一の出力に結合する方法は==> fileX <==

バックアップの問題ログファイルの変更をリアルタイムで確認して同様の結果を処理する他の方法はありますか?

答え1

考える次のような簡単なものを探しています。

tail -f file1.log file2.log file3.log | grep string & tail -f file4.log file5.log 

次のスクリプトを実行してこれをテストしました。

#!/bin/bash
while true; do echo file1 $(date); echo "unwanted"; sleep 3; done >> file1.log &
while true; do echo file2 $(date); echo "unwanted"; sleep 3; done >> file2.log &
while true; do echo file3 $(date); echo "unwanted"; sleep 3; done >> file3.log &


while true; do echo file4 $(date); echo "unwanted"; sleep 3; done >> file4.log &
while true; do echo file5 $(date); echo "unwanted"; sleep 3; done >> file5.log &

ご覧のとおり、スクリプトはfileN次の出力を印刷してから、date5unwantedつのログファイルのそれぞれに対して3秒ごとに新しい行に文字列を印刷します。その後、上記のコマンドを実行して次の出力を取得します。

$ tail -f file1.log file2.log file3.log | grep 'file' & tail -f file4.log file5.log 
[4] 861299
==> file4.log <==
file4 Sun Dec 17 01:34:31 PM EET 2023
unwanted
file4 Sun Dec 17 01:34:33 PM EET 2023
unwanted
file4 Sun Dec 17 01:34:34 PM EET 2023
unwanted
file4 Sun Dec 17 01:34:36 PM EET 2023
unwanted
file4 Sun Dec 17 01:34:37 PM EET 2023
unwanted

==> file5.log <==
file5 Sun Dec 17 01:34:31 PM EET 2023
unwanted
file5 Sun Dec 17 01:34:33 PM EET 2023
unwanted
file5 Sun Dec 17 01:34:34 PM EET 2023
unwanted
file5 Sun Dec 17 01:34:36 PM EET 2023
unwanted
file5 Sun Dec 17 01:34:37 PM EET 2023
unwanted
==> file1.log <==
file1 Sun Dec 17 01:34:31 PM EET 2023
file1 Sun Dec 17 01:34:33 PM EET 2023
file1 Sun Dec 17 01:34:34 PM EET 2023
file1 Sun Dec 17 01:34:36 PM EET 2023
file1 Sun Dec 17 01:34:37 PM EET 2023
==> file2.log <==
file2 Sun Dec 17 01:34:31 PM EET 2023
file2 Sun Dec 17 01:34:33 PM EET 2023
file2 Sun Dec 17 01:34:34 PM EET 2023
file2 Sun Dec 17 01:34:36 PM EET 2023
file2 Sun Dec 17 01:34:37 PM EET 2023
==> file3.log <==
file3 Sun Dec 17 01:34:31 PM EET 2023
file3 Sun Dec 17 01:34:33 PM EET 2023
file3 Sun Dec 17 01:34:34 PM EET 2023
file3 Sun Dec 17 01:34:36 PM EET 2023
file3 Sun Dec 17 01:34:37 PM EET 2023

関連情報