Centos 6を使用していますが、rsyslogのログを取っています。コンソールはカーネルメッセージで溢れています
- Klogdが起動していません(rsyslogを使っています)
- Rsyslog設定はコンソールに何も指示しません
- rsyslogを完全に停止させようともしました
それでも何かがカーネルログメッセージをコンソールに溢れさせています。それは何なのか、そしてそれを停止させるにはどうすればいいのでしょうか?
更新: これらはカーネル (ハードウェア、iptables など) によって生成されたメッセージで、/proc/kmsg
から出て行くもの、このようなものです
Shorewall:pub2loc:DROP:IN=br0 OUT=MAC=xxx SRC=xxx DST=xxx LEN=60 TOS=0x00 PREC=0x00 TTL=128 ID=15731 DF PROTO=TCP SPT=63767 DPT=3493 WINDOW=8192 RES=0x00 SYN URGP=0
49 haimg 2011-10-27
/etc/sysctl.conf
を変更することをお勧めします。具体的には、kernel.printk の行をいじってみましょう
# Uncomment the following to stop low-level messages on console
kernel.printk = 3 4 1 3
私は centos のデフォルト設定が何であるかわからないが、私は物事を設定している可能性が高いと思われるより多くの冗長なあなたが必要としています
また、shorewallのロギングに関するセクションも参照してください。あなたはロギングのために LOG ターゲットを使用する必要はありません、あなたは他のツールを使用したり、ログの重要度を調整したり、あなたのメッセージがどこに行くかを制御するために物事を微調整することができます
28 Zoredache 2011-10-28
実行時に値を設定するには、sysctl
を使います。(こちらで説明されているように、dmesg -n CUR
を使うこともできるようです)
Display:
# sysctl kernel.printk
kernel.printk = 2 4 1 7
出力のセパレータはシングルタブです
セット。ここでは区切り文字はただのスペースです。同様に動作します
# sysctl -w kernel.printk="2 4 1 7"
kernel.printk = 2 4 1 7
# sysctl kernel.printk
kernel.printk = 2 4 1 7
詳細は man sysctl
– “実行時にカーネルパラメータを設定する” を参照してください
上のBrianが与えたseverity levelsとkernel.printkの4つの値を思い出してください
- CUR = 現在の深刻度レベル; このレベルよりも重要なメッセージのみが印刷されます
- DEF = レベルのないメッセージに割り当てられたデフォルトの深刻度レベル
- MIN = 最小許容CUR
- BTDEF = ブート時のデフォルト CUR
私のCentOSでは: 7 4 1 7
CUR DEF MIN BTDEF
0 - emergency x x
1 - alert x x x
2 - critical x x
3 - error x x
4 - warning x x x
5 - notice x x
6 - informational V V
7 - debug
これはうるさい、クリティカルとアップ(エラーが出ない)だけでいい。ラベルの付いていないメッセージは警告とみなすべきなので、DEFで良いと思います
CUR DEF MIN BTDEF
0 - emergency x x
1 - alert x x x
2 - critical x x
3 - error V V
4 - warning x
5 - notice
6 - informational
7 - debug
設定してください。3 4 1 3
37 David Tonhofer 2014-08-07
これも参考になりました。RHEL ベースのディストロでは cat /proc/sys/kernel/printk
で現在の設定を見ることができます
printkファイルには4つの値があります。これらの値はそれぞれ、エラーメッセージを処理するための異なるルールを定義しています。最初の値は console loglevel と呼ばれ、コンソールに印刷されるメッセージの優先度を定義します。2 番目の値は、明示的なログレベルが設定されていないメッセージのデフォルトのログレベルを設定します。3 番目の値は、コンソールの loglevel に可能な限り低い loglevel 設定を設定します。最後の値は、コンソールのログレベルのデフォルト値を設定します
etc/sysconfig/init で LOGLEVEL パラメータを使用してコンソールのログレベルを設定することはサポートされなくなりました。Red Hat Enterprise Linux 6 でコンソールのログレベルを設定するには、起動時パラメータとして loglevel=’ を渡します。例えば、loglevel=6 とすると、6 未満のメッセージをすべて表示します (6 未満だけではありません)
Credit to:
12 Brian W 2012-12-09
を使用して、コンソールへのすべてのカーネルロギングを一時的に抑制することもできます
sudo dmesg -n 1
12 Marius 2018-01-08
ここでは、RedHatによると、”公式 “な方法があります
Red Hat Enterprise Linux 6 でコンソールの loglevel を設定するには、起動時のパラメータとして loglevel=<number> を渡します
6 haimg 2011-10-28
あなたが見ているのは、コンソールに出力されるカーネルログメッセージです。コンソールに届くログメッセージは、現在設定されているコンソールログレベルに依存します
カーネル cmdline に quiet
カーネルパラメータが含まれている場合、結果として得られるコンソールログレベルは 4
(つまりエラーとより悪い) になります。これがない場合は 7
(つまり情報とより悪い) に設定されます
cat /proc/cmdline
でアクティブなカーネルパラメータを、sysctl kernel.printk
で現在のコンソールログレベルを見ることができます。dmesg -n X
で動的に変更することができます (あるいは sysctl -w
で変更することもできます)
変更を恒久的なものにするには、カーネル cmdline にカーネルパラメータを追加するか (例: quiet
および/または loglevel=X
)、または /etc/sysctl.d
の下に sysctl .conf
ファイルを追加してください
カーネルパラメータはこのように追加することができます
# vi /etc/default/grub # edit the GRUB_CMDLINE_LINUX value
# for i in /boot/grub2/grub.cfg /boot/efi/EFI/*/grub.cfg; do
[ -f "$i" ] && grub2-mkconfig -o "$i" ; done
1 maxschlepzig 2016-11-30
スタックオーバーフロー関連のサイトなので、まずは出力のスイッチを切るのではなく、エラーに対処すべきだと言っておきます
コンソールにいるときにメッセージが表示されて何をしているのかわからない場合は、次のように入力してみてください
sudo dmesg -D
それで他の解決策を見るには十分に静かになるはずです
0 Geoff Johnson 2019-10-29
もし本当に困っているのであれば、何かを正しく表示したり入力したりすることができないほどの洪水が発生した場合に備えて、一時的にsyslogサービスを無効にしておくことができます
-1 Areeb Soo Yasir 2016-04-13