Linuxでのログファイルのクリーニング


10

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

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

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


logrotateログの自動削除とローテーションに関する公式のLinuxソフトウェアです。
Hanan N.

回転したくなかった。拭き取ってください。
ゾンビを熟考する

1
以下は私にとってはうまくいくようです:1. rm -rf / var / log / * 2. dmesg -c 3. reboot再起動中にもう一度ファイルに。誰かが実際のメカニズムについてもっと知っているなら、更新してください。
ゾンビを熟考する

回答:


7

古いログを消去する最も簡単な方法は、それらを削除しないことです。

ログをクリーンアップする最善の方法は、logrotateHanan N.が指摘するか、次のいずれかです。

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

各ログファイル。前回のブートから参照しているログエントリは正確にはわかりませんが、ブート後にこれをクリアしたい場合は、上記のコマンドを/etc/rc.localスクリプトに追加して、すべてのロギングがブート後に行われるようにすることができます。

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


「cp」コマンドは、最後に展開されたファイル名にすべてのログをコピーすると思います...おそらくあなたが意味したのは:find /var/log/* -exec cp /dev/null {} \;
jjmontes

@jjmontesありがとうございます。当時はfindコマンドを思いつきませんでした。:)しかし、実際には私が編集した方法に変更されます
Karlson

3

何をしているのかについては、カーネルメッセージ用の追加のログファイルを追加した方がよい場合があります。一部のログデーモンでは、書き込まれているレコードに対して一致を実行できるため、ファイル内の適切なレコードのみを取得できます。その後、実行間でファイルを回転、削除、または名前変更できます。(再起動しない場合は、ログデーモンにHUP信号を送信して、ファイルを再度開く必要がある場合があります。

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

パターンに一致するレコードのログを監視し、それらを報告する他のツールがあります。これらの1つはあなたのためにうまくいくかもしれません。


1

これは、ログをクリーンなログにローテーションしてから古いログエントリを削除することにより、(Ubuntu LTS 14.04では)正常に動作するようです。cp / dev / nullメソッドに似ていますが、よりクリーンだと思います。ymmv

logrotate --force /etc/logrotate.conf
find /var/log/ -name '*[0-5]*' -exec rm {} \;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.