カーネルメッセージを過度にスパムするデバイスを使用しています(毎秒10〜100メッセージ、Mediatekドライバー...)。カーネル自体からログを削除することは不可能です(数百のファイルに分散)。
このデバイスではdmesgはほとんど役に立たないことを受け入れましたが、残念ながらsystemdジャーナルも影響を受けます。
Systemdジャーナルへのカーネルメッセージのロギングをフィルタリング/無効化することは可能ですか?
Linux/Sysadminの良い習慣としては、カーネルメッセージを大量に無効にするのではなく、fzbdのソリューションのように、必要のない特定のログを黙らせることをお勧めします。
それでもなお、言及する価値はあります systemd 235 以降、journald.conf
ファイル内のカーネルメッセージを無効にするオプションがあります。 main journal.conf docs このオプションについて言及 これにより、journaldが/dev/kmsg
を読み取れないようにすることができます。
バージョン235はまだ多くのディストリビューションではまだ見つかっていない可能性があるため、次のコマンドでsystemdバージョンを確認できます。
systemctl --version
バージョン235以降を使用している場合は、最初に元の/etc/systemd/journald.confファイルのバックアップを作成してから、関連する行のコメントを外してyes
からno
に変更します。 :
ReadKMsg=no
Journaldサービスを保存して終了し、再起動します。
Sudo systemctl restart systemd-journald.service
デバイスのカーネルモジュールに、無効にできるロギング/デバッグパラメータがあるかどうかを確認します。
modprobe $module_name
ls /sys/module/$module_name/parameters
そうでない場合、バージョンが235未満のsystemdの場合、ログレベルでメッセージをフィルタリングすることが最善の方法です。次に例を示します。
journalctl --priority=3
ログの値はman syslog
で確認できます。
kernel.printk
を使用してカーネルロギングレベルを下げると、コンソールロギングにのみ影響するため、このパラメーターの値に関係なく、ユーザーランドアプリケーションには同じメッセージが表示されます。