如何禁用消息或日志在控制台/虚拟终端上打印?

我的无线驱动器很吵。它每隔10-30秒就会向控制台打印出信息。所以,如果我正在使用VT1或其他什么东西,我会一直看到滚动的消息。有没有办法关闭这个功能?我喜欢在虚拟终端上工作,但这让处理起来很困难。:)
有什么想法吗?
3个回答

您可以使用命令
sudo dmesg -n 1

为了阻止内核(及其驱动程序)除了紧急消息外的所有消息出现在控制台上。
要在每次启动时修复,请将命令添加到:
/etc/rc.local

dmesg有两个方便的选项可以实现这一点:

-D, --console-off           disable printing messages to console
-E, --console-on            enable printing messages to console

dmesg -D只是dmesg -n 1的快捷方式,不同之处在于它会存储当前的日志级别,这样你可以使用dmesg -E轻松恢复它。所以相比使用dmesg -n更方便一些。

另外,你可以通过以下方式检查当前的日志级别:

$ cat /proc/sys/kernel/printk
7       4       1       7

使用man klogctl以获取有关这些数字的更多解释...

请注意,dmesg -Ddmesg -E已经被capabilities(参见CAP_SYSLOG)破坏。然而,设置kernel.dmesg_restrict=0并不能启用这两个dmesg命令;到目前为止,我还没有找到在kernel.dmesg_restrict=1默认设置生效后的Ubuntu版本中启用它们的方法 - Eric Towers

/proc/sys/kernel/printk

你也可以直接设置日志级别

echo 1 > /proc/sys/kernel/printk

这基本上就是 dmesg 所做的事情。

该文件的格式在此处解释:https://superuser.com/a/793692/128124

loglevel 命令行启动参数

设置启动时的初始值,允许您查看预初始化消息。


嘿嘿,我先不看你的答案自己测试了一下,结果完美无误 \o/ 话说,这个能用 'sysctl' 来完成吗? - tijko