如何隐藏 udev 的消息?

jst*_*err 9 usb udev

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

rei*_*che 9

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

[sdb] Assuming drive cache: write through
Run Code Online (Sandbox Code Playgroud)

一些时间。

但这不是udev,或syslog在控制台上向您提及这一点。您可以通过杀死syslogdrsyslogd(请确保这不是生产服务器,我希望这不是插入 USB 集线器和所有这些 :)并重新插入 USB 设备来确定自己知道这一点。

消息仍然弹出,正如Ulrich提到的,这是来自内核,或者确切地说是 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             */
Run Code Online (Sandbox Code Playgroud)

因此,使用上面提到的 printk 参数值,您可以让内核关闭控制台上的信息性消息或简单警告。例如,

echo "3 3 3 3" > /proc/sys/kernel/printk
Run Code Online (Sandbox Code Playgroud)

让我插入 USB 拇指棒变得安静。你想让它通过重新启动坚持下去,添加一行到/etc/sysctl.conf

kernel.printk = 3 3 3 3
Run Code Online (Sandbox Code Playgroud)


dai*_*isy 5

是的,通过更改到不同的 syslog 频道,前提是您了解 syslog 的工作原理:

从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.
Run Code Online (Sandbox Code Playgroud)

所以现在您可以编辑/etc/udev/udev.conf和更改此值。