如何隐藏 udev 的消息?

如何隐藏 udev 的消息?

当我插入 usbhub(7 个)时,udev 会在控制台中显示大量消息。我可以隐藏这些消息或将它们发送到 /dev/null 吗?

答案1

udev在 CentOS 上,当我插入简单的 USB 拇指棒时,我没有收到消息。相反,我得到:

[sdb] Assuming drive cache: write through

一些时间。

但这不是udev,或者syslog在控制台上向您提及这一点。您可以通过杀死syslogdrsyslogd(请确保这不是生产服务器,我希望它不是插入 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

相关内容