Как остановить сообщения ядра от наводнения моей консоли?

Я использую ведение журнала Centos 6, rsyslog. Консоль заливается сообщениями ядра.

  • Klogd не работает (я использую rsyslog)
  • Конфигурация Rsyslog не направляет ничего на консоль.
  • Даже попытался остановить rsyslog вообще

Тем не менее что-то наводняет мою консоль сообщениями журнала ядра. Что это такое и как я могу остановить его?

Обновление . Это сообщения, созданные ядром (аппаратное обеспечение, iptables и т. д.), материал, выходящий из /proc/kmsg, например:

  

Shorewall: pub2loc: DROP: IN = br0 OUT = MAC = xxx SRC = xxx DST = xxx LEN = 60 TOS = 0x00 PREC = 0x00 TTL = 128 ID = 15731 DF PROTO = TCP SPT = 63767 DPT = 3493 WINDOW = 8192 RES = 0x00 SYN URGP = 0

38 голосов | спросил haimg 28 +04002011-10-28T02:49:58+04:00312011bEurope/MoscowFri, 28 Oct 2011 02:49:58 +0400 2011, 02:49:58

7 ответов


23

Я предлагаю вам изменить свой /etc/sysctl.conf. В частности, вы хотите настроить строку kernel.printk .

# Uncomment the following to stop low-level messages on console
kernel.printk = 3 4 1 3

Я не уверен, что такое настройки по умолчанию для centos, но я думаю, что у вас есть что-то более подробное, чем вам нужно.

Также см. раздел shorewall для ведения журнала. Вам не нужно использовать цель LOG для ведения журнала, вы можете использовать другие инструменты или настроить серьезность журнала, а также настроить элементы управления, в которых вы отправляете сообщения.

ответил Zoredache 28 +04002011-10-28T04:17:10+04:00312011bEurope/MoscowFri, 28 Oct 2011 04:17:10 +0400 2011, 04:17:10
23

Чтобы установить значения во время выполнения, используйте sysctl. (Я полагаю, что можно напрямую писать в /proc/sys/kernel/printk и, видимо, вы также можете использовать dmesg -n CUR, как описано здесь )

Дисплей:

# sysctl kernel.printk
kernel.printk = 2       4       1       7

Сепараторы на выходе - это одиночные вкладки, т. к.

Set. Здесь разделители - это просто пробелы. Работает также.

# sysctl -w kernel.printk="2 4 1 7"
kernel.printk = 2 4 1 7
# sysctl kernel.printk
kernel.printk = 2       4       1       7

Подробнее см. man sysctl - «настроить параметры ядра во время выполнения».

Напоминание уровней серьезности и четырех значений kernel.printk, предоставленных Брайаном выше:

  • CUR = текущий уровень серьезности; печатаются только сообщения, более важные, чем этот уровень.
  • DEF = уровень серьезности по умолчанию, назначенный для сообщений без уровня
  • MIN = минимально допустимый CUR
  • BTDEF = время загрузки по умолчанию CUR

На моем CentOS: 7 4 1 7

                     CUR  DEF  MIN  BTDEF
0 - emergency        x              x                        
1 - alert            x         x    x
2 - critical         x              x
3 - error            x              x
4 - warning          x    x         x
5 - notice           x              x
6 - informational    V              V
7 - debug            

Это слишком шумно, я просто хочу критических и вверх (без ошибок). Немаркированные сообщения следует рассматривать как предупреждение, поэтому DEF хорош:

                     CUR  DEF  MIN  BTDEF
0 - emergency        x              x                        
1 - alert            x         x    x
2 - critical         x              x
3 - error            V              V
4 - warning               x         
5 - notice                           
6 - informational                   
7 - debug            

Установите для: 3 4 1 3

ответил David Tonhofer 7 PM00000030000003231 2014, 15:56:32
11

Я тоже нашел это полезным. На дистрибутивах, основанных на RHEL, вы можете cat /proc/sys/kernel/printk, чтобы узнать, каковы ваши текущие настройки.

В файле printk найдены четыре значения. Каждое из этих значений определяет другое правило для обработки сообщений об ошибках. Первое значение, называемое консольным левым уровнем, определяет самый низкий приоритет сообщений, напечатанных на консоли. (Обратите внимание, что чем ниже приоритет, тем выше номер журнала). Второе значение устанавливает значение по умолчанию для сообщений без явного привязки к ним. Третье значение устанавливает самую низкую возможную конфигурацию уровня журнала для уровня управления консолью. Последнее значение устанавливает значение по умолчанию для уровня управления консолью.

Использование параметра LOGLEVEL в /etc /sysconfig /init для установки уровня ведения консоли больше не поддерживается. Чтобы установить уровень ведения консоли в Red Hat Enterprise Linux 6, передайте loglevel = 'в качестве параметра времени загрузки. Например, loglevel = 6 будет печатать все сообщения менее 6 (не равными как раз меньше).

Кредит:

ответил Brian W 9 SunEurope/Moscow2012-12-09T23:02:04+04:00Europe/Moscow12bEurope/MoscowSun, 09 Dec 2012 23:02:04 +0400 2012, 23:02:04
6

Вот «официальный» способ сделать это, в соответствии с RedHat :

  

Чтобы установить уровень управления консолью в Red Hat Enterprise Linux 6, выполните loglevel = <number> как параметр времени загрузки.

ответил haimg 28 +04002011-10-28T23:31:09+04:00312011bEurope/MoscowFri, 28 Oct 2011 23:31:09 +0400 2011, 23:31:09
3

Вы также можете временно заблокировать ведение журнала ядра на консоль, используя:

sudo dmesg -n 1

См. также: https://askubuntu.com/questions/97256/how-do-i-disable-messages-or-logging-from-printing-on-the-console-virtual-termin

ответил Marius 9 Jam1000000amTue, 09 Jan 2018 01:06:08 +030018 2018, 01:06:08
0

Если вы находитесь в реальном заторе, вы можете временно отключить службу syslog временно в случае, если есть такой поток, который вы не можете просмотреть или ввести что-либо правильно.

ответил Areeb Soo Yasir 13 AMpWed, 13 Apr 2016 04:44:55 +030044Wednesday 2016, 04:44:55
0

То, что вы видите, - это сообщения журнала ядра, напечатанные на консоли. Доступ к сообщениям журналов в консоли зависит от установленного в данный момент уровня журнала консоли.

Когда ядро ​​cmdline содержит параметр ядра quiet, итоговый уровень журнала консоли - 4 (т.е. ошибки и хуже). Без него он устанавливается в 7 (т. Е. Информация и хуже).

Вы можете просмотреть активные параметры ядра с помощью cat /proc/cmdline и вашего текущего уровня журнала консоли с помощью sysctl kernel.printk. Его можно динамически изменять с помощью dmesg -n X (или даже с помощью sysctl -w).

Чтобы сделать изменение постоянным, вы можете добавить параметры ядра в cmdline ядра (например, quiet и /или loglevel=X) или добавить файл sysctl .conf в /etc/sysctl.d

Параметр ядра можно добавить следующим образом:

# vi /etc/default/grub # edit the GRUB_CMDLINE_LINUX value
# for i in /boot/grub2/grub.cfg /boot/efi/EFI/*/grub.cfg; do
     [ -f "$i" ] && grub2-mkconfig -o "$i" ; done
ответил maxschlepzig 30 32016vEurope/Moscow11bEurope/MoscowWed, 30 Nov 2016 11:57:49 +0300 2016, 11:57:49

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132