首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何选择性地启用printk?

如何选择性地启用printk?
EN

Unix & Linux用户
提问于 2014-05-17 14:12:41
回答 1查看 5K关注 0票数 0

我想打印一些来自内核的声明,但不是全部。

所以我能选择性地使用printk吗?

我有选择地说,我只想在特定的地方启用printk,并在其他地方禁用它。

现在,我只能启用(在内核配置中启用printk)或全局禁用它;我没有选择。

EN

回答 1

Unix & Linux用户

发布于 2014-05-20 10:15:29

(编辑:其他信息也在这里:kernel.printk值描述)

您可以使用sysctl命令/系统按需要修改内核printk设置。

代码语言:javascript
复制
sysctl -w kernel.printk="4 4 1 7"

将printk设置设置为“默认值”,而

代码语言:javascript
复制
sysctl -w kernel.printk="3 4 1 3"

将防止将低级别消息输出到控制台。

代码语言:javascript
复制
sysctl kernel.printk

将显示您当前的设置。

来自linux文档(内核文档):

printk: printk中的四个值分别表示: console_loglevel、default_message_loglevel、minimum_console_loglevel和default_console_loglevel。当打印或记录错误消息时,这些值会影响printk()行为。有关不同日志级别的更多信息,请参见“man 2 syslog”。

  • console_loglevel:优先级高于此的消息将被打印到控制台
  • default_message_loglevel:没有显式优先级的消息将使用此优先级打印
  • minimum_console_loglevel:可设置console_loglevel的最小(最高)值
  • default_console_loglevel: console_loglevel的默认值

您通常需要成为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的配置设置是不同的,如同往常一样,手册页是您的朋友。

票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/130742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档