Запретить появление сообщений ядра в dmesg
Можно ли предотвратить появление сообщений ядра в выводе dmesg?
Например, я использую программное обеспечение, которое завершает туннели PPPoE. Одной из функций, которые он предоставляет, является возможность задания имен пользовательских интерфейсов.
Однако это приводит к сообщениям в dmesg, таких как:
...
[Mon May 28 09:50:06 2018] ifname.3: renamed from pppoe3
[Mon May 28 11:07:40 2018] ifname.4: renamed from pppoe4
[Mon May 28 11:11:37 2018] ifname.5: renamed from pppoe5
[Mon May 28 11:18:26 2018] ifname.6: renamed from pppoe6
[Mon May 28 11:40:46 2018] ifname.7: renamed from pppoe7
...
Я отслеживал функцию, ответственную за это netdev_info
: https://github.com/torvalds/linux/blob/v4.16/net/core/dev.c#L1204
Проблема с этими сообщениями заключается в том, что они заполняют буфер и переопределяют любые другие важные сообщения (сбой драйвера, предупреждения iptable и т. Д.).
Можно ли подавить появление этого конкретного сообщения в выводе dmesg?
Я попытался установить sysctl kernel.printk, но это, похоже, не имеет никакого эффекта, и сообщения появляются в выводе dmesg независимо от настроек.
Спасибо.
2 ответа
Хорошо, что функция netdev_info печатает сообщения ядра через printk на уровне INFO. Я считаю, что вы можете настроить свой kernel.printk
контролировать уровень сообщений, которые фактически регистрируются. Таким образом, вы можете отрегулировать вниз от уровня INFO до менее шумных уровней WARN или ERR.
Я вообще люблю идти с этим 3 4 1 3
по умолчанию
# /etc/sysctl.d/printk.conf
# Uncomment the following to stop low-level messages on console
kernel.printk = 3 4 1 3
Смотрите эти ссылки для более подробной информации о kernel.printk
- https://unix.stackexchange.com/questions/13019/description-of-kernel-printk-values
- https://www.kernel.org/doc/Documentation/sysctl/kernel.txt
Это подавит не только это конкретное сообщение. Если у вас есть другая информация, записанная на уровне INFO, которую вы на самом деле хотите или должны увидеть, это может быть не лучшим решением.
Если вас волнует только то, что регистрируется в журналах, управляемых системным журналом, тогда вы сможете применять фильтры в зависимости от того, какой демон syslog вы используете.
dmesg
читает из кольцевого буфера ядра, и, насколько я могу судить, вы не можете предотвратить его "загрязнение" нежелательными сообщениями.
В любом случае, в зависимости от вашего дистрибутива, старые журналы ядра можно найти в /var/log/messages
или же /var/log/syslog
,