カーネルモジュールのいくつかの機能をテストするためにkvm ubuntu 10.04仮想マシンを使用しています。/var/log
モジュールのカーネルメッセージを観察するためにこれらのファイルを見てください。
クリーンな状態で起動するために仮想rm -rf /var/log/*
マシンを実行してから再起動し、前のメッセージを含むログファイルを削除しました。ただし、再起動後も、新しいログファイルには古いログメッセージがまだ含まれています。最終的に、これらのログファイルメッセージを削除するには、約5〜6サイクルのファイルの削除と仮想マシンの再起動が必要です。
なぜこれが起こるのですか?ログファイルをクリーンアップするより簡単な方法はありますか?
答え1
古いログをクリーンアップする最も簡単な方法は削除しないことです。
ログを整理する最善の方法は、logrotate
Hanan 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 {} \;