我正在使用 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
答案1
答案2
要在运行时设置值,请使用sysctl
。(我想也可以直接写入/proc/sys/kernel/printk
,显然你也可以使用dmesg -n CUR
所述这里)
展示:
# 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 给出的 kernel.printk 的四个值:
- 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
答案3
您还可以使用以下命令暂时禁止所有内核记录到控制台:
sudo dmesg -n 1
答案4
这是“官方”的做法,根据 RedHat:
要在 Red Hat Enterprise Linux 6 中设置控制台日志级别,请传递 loglevel=<number> 作为启动时参数。