当我插入 usbhub(7 个)时,udev 会在控制台中显示大量消息。我可以隐藏这些消息或将它们发送到 /dev/null 吗?
答案1
udev
在 CentOS 上,当我插入简单的 USB 拇指棒时,我没有收到消息。相反,我得到:
[sdb] Assuming drive cache: write through
一些时间。
但这不是udev
,或者syslog
在控制台上向您提及这一点。您可以通过杀死syslogd
或rsyslogd
(请确保这不是生产服务器,我希望它不是插入 USB 集线器之类的东西)并重新插入 USB 设备来确定自己知道这一点。
消息仍然弹出,所以乌尔里希提到过,这来自内核,或者确切地说是 USB 模块,它用于kernel.printk
向您显示这些消息,根本不使用任何系统服务。
Linux 文档的摘录sysctl/kernel.txt
:
printk中的四个值分别表示:console_loglevel、default_message_loglevel、minimum_console_loglevel和default_console_loglevel。
这些值会影响打印或记录错误消息时 printk() 的行为。有关不同日志级别的更多信息,请参阅“man 2 syslog”。
- console_loglevel:优先级高于此的消息将打印到控制台
- default_message_level:没有明确优先级的消息将以此优先级打印
- minimum_console_loglevel:console_loglevel 可以设置的最小(最高)值
- default_console_loglevel:console_loglevel的默认值
#define KERN_EMERG "<0>" /* system is unusable */
#define KERN_ALERT "<1>" /* action must be taken immediately */
#define KERN_CRIT "<2>" /* critical conditions */
#define KERN_ERR "<3>" /* error conditions */
#define KERN_WARNING "<4>" /* warning conditions */
#define KERN_NOTICE "<5>" /* normal but significant condition */
#define KERN_INFO "<6>" /* informational */
#define KERN_DEBUG "<7>" /* debug-level messages */
因此,使用上面提到的 printk 参数值,您可以让内核关闭控制台上的信息消息或简单警告。例如,
echo "3 3 3 3" > /proc/sys/kernel/printk
让我插入 USB 拇指棒时变得安静。您想让它在重新启动后保持不变,请添加一行/etc/sysctl.conf
:
kernel.printk = 3 3 3 3
答案2
是的,通过更改为不同的系统日志通道,前提是您了解系统日志的工作原理:
来自 udev 手册:
udev_log
The logging priority which can be set to err ,info or the corre-
sponding numerical syslog(3) value. The default value is err.
现在您可以编辑/etc/udev/udev.conf
和更改此值。
答案3
你可以简单地尝试sudo setterm --msg off