Как я могу скрыть сообщения от udev?

9

Когда я подключаю usbhub (7 стиков), udev отображает много сообщений в консоли. Могу ли я скрыть эти сообщения или отправить их в / dev / null?

jsterr
источник

Ответы:

8

В CentOS я не получаю udevсообщения, когда подключаю простую 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 ,imum_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
Райхе
источник
5

Да, перейдя на другой канал системного журнала, если вы понимаете, как работает системный журнал:

Из руководства 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и изменять это значение.

маргаритка
источник
хорошо, спасибо за ответ. Как я могу узнать, какое значение системного журнала я должен использовать, чтобы все сообщения usb-udev были скрыты?
Jsterr
Нужно ли использовать значения «Уровень объекта» или «Уровень серьезности»? См en.wikipedia.org/wiki/Syslog#Facility_Levels
jsterr