我想打印一些来自内核的声明,但不是全部。
所以我能选择性地使用printk吗?
我有选择地说,我只想在特定的地方启用printk,并在其他地方禁用它。
现在,我只能启用(在内核配置中启用printk)或全局禁用它;我没有选择。
发布于 2014-05-20 10:15:29
(编辑:其他信息也在这里:kernel.printk值描述)
您可以使用sysctl命令/系统按需要修改内核printk设置。
sysctl -w kernel.printk="4 4 1 7"将printk设置设置为“默认值”,而
sysctl -w kernel.printk="3 4 1 3"将防止将低级别消息输出到控制台。
sysctl kernel.printk将显示您当前的设置。
来自linux文档(内核文档):
printk: printk中的四个值分别表示: console_loglevel、default_message_loglevel、minimum_console_loglevel和default_console_loglevel。当打印或记录错误消息时,这些值会影响printk()行为。有关不同日志级别的更多信息,请参见“man 2 syslog”。
您通常需要成为root用户,或者拥有使用sysctl编写(-w)新值的sudo特权。您也可以将值回显到/proc/sys/root/printk,也需要是root(ish)。
Edit2:
我的猴子调试助理刚刚提醒我,还有一种方法可以获得内核printk消息,这可能很有用。
可以请求syslog/rsyslog/任意日志守护进程将内核输出发送到特定的文件、管道或套接字,供您选择、分析、保存或丢弃的程序酌情读取。
我的rsyslog.conf显示,所有kern.*级别的消息都被发送到/var/log/kern.log,您可以轻松地侦听该文件并获取您想要的任何消息。
还可以定义您自己的工具类型,并让rsyslog将它们发送到某个特定的地方。如果愿意,甚至有选择地将kern.warn或kern.crit消息发送到某个地方。
rsyslog和syslog的配置设置是不同的,如同往常一样,手册页是您的朋友。
https://unix.stackexchange.com/questions/130742
复制相似问题