40

Я использую 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 ОКНО = 8192 RES = 0x00 SYN URGP = 0

7 ответов7

29

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

Дисплей:

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

Сепараторы в выходных данных являются одиночными вкладками, кстати.

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

# 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

26

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

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

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

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

11

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

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

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

Кредит для:

6

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

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

4

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

sudo dmesg -n 1

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

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
-1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .