システムログで重複した行をフィルタリングできますか?

システムログで重複した行をフィルタリングできますか?

お母さんのコンピュータには、Lexmarkドライバの行で埋められたsyslog / kern.logが表示されます。

Sep 22 21:01:20 pamela-desktop kernel: [48657.676578] usb 1-3: usbfs: process 1490 (demond_nscan) did not claim interface 3 before use
Sep 22 21:01:20 pamela-desktop kernel: [48657.676585] usb 1-3: usbfs: process 1490 (demond_nscan) did not claim interface 3 before use
Sep 22 21:01:20 pamela-desktop kernel: [48657.676592] usb 1-3: usbfs: process 1490 (demond_nscan) did not claim interface 3 before use

今、この値に必要な数を掛けると161GBになります。

sys/kern.logで重複した行をフィルタリングするスクリプトを作成し、それをcronジョブとして実行することに加えて、私ができることは他にありますか?

答え1

syslogは重複した行を自動的に削除しますが、ここではカーネルがsyslogに送信する前にタイムスタンプ(開始後のマイクロ秒単位)を挿入するため、重複しません。

syslogタイムスタンプもログにスタンプを付けるので、このタイムスタンプは重複しているように見えるかもしれませんが、それとその粒度はカーネルの問題をデバッグするのに役立ちます(syslogタイムスタンプは正確ではなく、実際のイベントとそれを示すsyslogの間にあります)違いがあるかもしれないからです)。遅延が発生し、syslogに存在するか消えるので、出力でタイムスタンプを/var確認することをお勧めします。dmesg

次の手順を実行して、これらのkmsgタイムスタンプを無効にできます。

echo N | sudo tee /sys/module/printk/parameters/time

printk.time=Nまたは、Linuxカーネルのコマンドラインに渡すようにブートローダを設定して永久に作成します。

答え2

金持ちで誇りに思うコメントかなり正確です:

  1. まず、ドライバの問題を解決する必要があります。
  2. それ以外の場合は、ログファイルが大きすぎるのが問題なので、修正してくださいlogrotate
  3. 引き続きこの行をフィルタリングするには、次の手順に従います。

あなたの言葉によるとその他の問題、私の考えはUbuntuマシンのようですが、もしそうなら、おそらく実行しているでしょう。システムログ(またはインストールすることもできます)。それを試してps aux | grep syslogみてください。

rsyslogを使用すると、行をフィルタリングできます属性ベースのフィルタ。たとえば、フィルタはリテラル文字列の一致または正規表現のいずれかです。文書の例:

:msg, contains, "error" ~

'~' はメッセージを削除する必要があることを示します。したがって、これらのいずれかを簡単に作成して、不良ドライバのメッセージを完全に抑制できます。これは技術的に重複するアイテムを削除しないことに注意してください。どのこのエラーが記録される行です。

関連情報