Linuxでのログファイルのクリーンアップ

Linuxでのログファイルのクリーンアップ

カーネルモジュールのいくつかの機能をテストするためにkvm ubuntu 10.04仮想マシンを使用しています。/var/logモジュールのカーネルメッセージを観察するためにこれらのファイルを見てください。

クリーンな状態で起動するために仮想rm -rf /var/log/*マシンを実行してから再起動し、前のメッセージを含むログファイルを削除しました。ただし、再起動後も、新しいログファイルには古いログメッセージがまだ含まれています。最終的に、これらのログファイルメッセージを削除するには、約5〜6サイクルのファイルの削除と仮想マシンの再起動が必要です。

なぜこれが起こるのですか?ログファイルをクリーンアップするより簡単な方法はありますか?

答え1

古いログをクリーンアップする最も簡単な方法は削除しないことです。

ログを整理する最善の方法は、logrotateHanan N.が指摘したとおりです。

find /var/log -type f -exec /bin/cp /dev/null {} \;

各ログファイルについて。最後のブート時にどのログエントリを参照しているのかわかりませんが、ブート後にそのログエントリをクリアするには、上記のコマンドをスクリプトに入れて、ブート後にすべての/etc/rc.localロギングが発生するようにします。

通常、ログはすべてのトラブルシューティングの開始点であるため、消去したくありません。

答え2

現在実行中の操作については、カーネルメッセージ用の追加ログファイルを追加するのが最善です。一部のロギングデーモンでは、記録中のレコードに対して一致を実行して、ファイルから適切なレコードのみを取得できます。その後、実行間でファイルを回転、削除、または名前を変更できます。 (再起動せずにログデーモンにHUPシグナルを送信してファイルを再度開く必要があります。

ログから新しいレコードのみを抽出できるツールもあります。パッケージlogtailのユーティリティはlogcheckそのようなユーティリティの1つです。代替オフセットファイルを使用して実行できます。

パターンに一致する履歴のログを監視し、それを報告する他のツールがあります。これらのいずれかがあなたに役立ちます。

答え3

ログを回転してログをクリーンアップし、古いログエントリを削除すると正常に動作するようです(Ubuntu LTS 14.04)。 cp /dev/null メソッドと似ていますが、よりきれいだと思います。 ymmv

logrotate --force /etc/logrotate.conf
find /var/log/ -name '*[0-5]*' -exec rm {} \;

関連情報