
私は、ネットワーク トラフィックの完全なパケット キャプチャを実行するバッファ ボックスで使用されるスクリプトを作成しようとしています。これはかなり大規模なネットワーク用なので、キャプチャを 100 MB のセグメントに分割します。ネットワーク トラフィックが 1 分間以上高くなると、その期間をカバーする複数の pcap が作成されることがよくあります。
そこで私がやりたいのは、何かを探しているアナリストが日付と時刻、そしてその前後何分でファイルを検索したいかを指定できる bash スクリプトを作成することです。明らかに、次のようなことができます -
ls -al | grep "Dec 1" | grep 02:00
ls -al | grep "Dec 1" | grep 02:01
など、各結果を取得し、探している特定のキーワードについて各ファイルを個別に grep しますが、時間範囲内に作成されたすべてのファイルに対してより広範な検索を実行し、各ファイルに対してキーワードを grep できるようにしたいと考えています。
どのようにすればよいかよくわかりません。ご協力いただければ幸いです。
答え1
find
GNU/Linux で実行できる優れた機能のいくつかを以下に示します。
単位:
n
その通りんユニット-n
未満んユニット+n
より多いん単位 -
どうしたの:
-atime
: 前回アクセスした-ctime
: 変更点ファイル自体(権限、所有者など)ではなく、その内容-mtime
:ファイルの内容かわった-amin n
:ん分齢-atime n
:ん日(24時間)前ctime/min
およびも同様ですmtime/min
。
したがって:
find -atime -30
→ 最終アクセスから30日以内find -ctime +5
→ 5日以上前、ファイル自体に変更ありfind -mtime +2 -31
→ ファイルの内容が 2 日以上 31 日以内に変更されました
また - -daystart
: 今日以降、0.00h
グレッピング
find
もの -exec grep {} \;
→; 最後の部分 ( ) は重要です -と{} \;
の間の 1 つの空白に注意してください{}
\;
オプション-exec
を使用すると、他のコマンドを組み込むことができます。find
答え2
find -iname "" -mtime -7 -exec zgrep "" {} \;
例えば
/opt/WebSphere/AppServer/profiles/application/logs/ を検索 -iname "SystemOut*" -mtime -7 -exec zgrep "FileNotFoundException" {} \;
ディレクトリ /opt/WebSphere/AppServer/profiles/application/logs/ 内で、過去 7 日間の SystemOut で始まるファイルを検索し、文字列 FileNotFoundException を探します。