大容量ログファイルを簡単に切り取る方法はありますか?つまり、ログファイルの特別な内容だけを見る方法です。例えば
- ログファイルから最後の1000行を抽出する方法は?
- 特殊文字列を含む行のみを抽出する方法は?
- 特別な日付/時刻を含むログファイルを抽出するには?
私も知っていますが、tail
このコマンドは最後の10行に制限されており、速度が速すぎます。 8GBのログファイルを取得するのに時間がかかります。
答え1
ログファイルから最後の1000行を抽出する方法は?
tail -1000 file.log
特殊文字列を含む行のみを抽出する方法は?
grep special_string file.log
特別な日付/時刻を含むログファイルを抽出するには?
私がこれを理解しているかどうかはわかりません。詳しく説明してもらえますか?正確に何をすべきですか?
答え2
特殊文字列を含む行のみを抽出する方法は?
ただこれだけ言うよ。 SolarisまたはHP-UXシステムでは別々のファイルとして存在grep
し、各ファイルは異なるアルゴリズムを使用します。ほとんどのLinuxディストリビューションには、これら3つの名前のそれぞれにGNU grepとシンボリックリンクしかありません。パターンをメタ文字(「.」、「*」、「?」など)と一致させる必要がなく、通常の文字列のみを一致させると、間違いなくより速く実行されます。より速く実行しても、8GBのログには処理する必要があるテキストがたくさんあります。より小さい0.5GBサイズのファイルに分割するのはどうですか?egrep
fgrep
fgrep
fgrep
答え3
一度だけ実行するには、grep
とを使用しますtail
。
logrotate
大容量ログファイルを処理するには(from a)を使用することをお勧めしますcron
。時間、サイズ、行数などに基づいてログを分割するように設定できます。とても便利で柔軟です。
答え4
また、logwatch
重要なものをフィルタリングするために、または同様のものを検討してください。