カーネルメッセージがdmesg出力に表示されないようにすることは可能ですか?
例えば。 PPPoEトンネルを終了するソフトウェアを実行しています。それが提供する機能の1つは、カスタムインターフェイス名を設定する機能です。
ただし、この結果、次のようなdmesgのメッセージが表示されます。
...
[Mon May 28 09:50:06 2018] ifname.3: renamed from pppoe3
[Mon May 28 11:07:40 2018] ifname.4: renamed from pppoe4
[Mon May 28 11:11:37 2018] ifname.5: renamed from pppoe5
[Mon May 28 11:18:26 2018] ifname.6: renamed from pppoe6
[Mon May 28 11:40:46 2018] ifname.7: renamed from pppoe7
...
それを担当する関数がnetdev_info
であると追跡しました: https://github.com/torvalds/linux/blob/v4.16/net/core/dev.c#L1204
これらのメッセージの問題は、バッファがいっぱいになり、他の重要なメッセージ(ドライバのクラッシュ、iptableの警告など)が上書きされることです。
この特定のメッセージがdmesg出力に表示されないようにすることは可能ですか?
Sysctl kernel.printkを設定してみましたが、効果がないようで、設定に関係なくdmesgの出力にメッセージが表示されます。
ありがとうございました。
その関数は、netdev_infoが[〜#〜] info [〜#〜]レベルでprintkを介してカーネルメッセージを印刷していることです。 kernel.printk
実際にログに記録されるメッセージのレベルを制御します。そのため、INFOのレベルから、ノイズの少ないWARNまたはERRレベルまで下方に調整できます。
私は一般的にこれを使いたいです3 4 1 3
デフォルトとして
# /etc/sysctl.d/printk.conf
# Uncomment the following to stop low-level messages on console
kernel.printk = 3 4 1 3
Kernel.printkの詳細については、これらのリンクを参照してください
これにより、その特定のメッセージだけが抑制されます。実際に表示したい、または表示する必要がある情報がINFOレベルでログに記録されている場合、これは適切な解決策ではない可能性があります。
Syslogが管理するログに何が記録されているかだけを気にする場合は、実行しているsyslogデーモンに応じてフィルターを適用できるはずです。
dmesg
はカーネルリングバッファーから読み取られますが、私が知る限り、不要なメッセージによる "汚染"を防ぐことはできません。
とにかく、ディストリビューションによっては、古いカーネルログが/var/log/messages
または/var/log/syslog
。