Как проверить состояние ядра с помощью Dmesg в Linux

12 set 2022 3 min di lettura
Как проверить состояние ядра с помощью Dmesg в Linux
Indice dei contenuti

Введение

Ядро Linux — это ядро операционной системы, управляющее доступом к системным ресурсам, таким как ЦП, устройства ввода-вывода, физическая память и файловые системы. Ядро записывает различные сообщения в буфер ядра во время процесса загрузки и во время работы системы. Эти сообщения содержат различную информацию о работе системы.

Кольцевой буфер ядра — это часть физической памяти, которая содержит сообщения журнала ядра. Он имеет фиксированный размер, что означает, что при заполнении буфера самые старые записи регистра перезаписываются.

Утилита командной строки dmesg используется для печати и проверки кольцевого буфера ядра в Linux и других Unix-подобных операционных системах. Это полезно для изучения сообщений запуска ядра и отладки проблем, связанных с аппаратным обеспечением.

В этом уроке мы рассмотрим основы команды dmesg.

Использование команды dmesg

Синтаксис команды dmesg следующий:

dmesg [OPTIONS]

При вызове без каких-либо параметров dmesg записывает все сообщения из кольцевого буфера ядра в стандартный вывод:

dmesg

По умолчанию все пользователи могут запускать команду dmesg. Однако в некоторых системах доступ к dmesg может быть ограничен для пользователей без полномочий root. В этой ситуации при вызове dmesg вы получите сообщение об ошибке, как показано ниже:

dmesg: read kernel buffer failed: Operation not permitted

Параметр ядра kernel.dmesg_restrict указывает, могут ли непривилегированные пользователи использовать dmesg для просмотра сообщений из буфера журнала ядра. Чтобы снять ограничения, установите его в ноль:

sudo sysctl -w kernel.dmesg_restrict=0

Обычно вывод содержит много строк информации, поэтому доступна для просмотра только последняя часть вывода. Чтобы просматривать по одной странице за раз, перенаправьте вывод в утилиту подкачки, например less или more:

dmesg --color=always | less

Параметр --color=always используется для сохранения цвета вывода.

Если вы хотите отфильтровать сообщения в буфере, используйте grep. Например, чтобы просмотреть только сообщения, относящиеся к USB, введите:

dmesg | grep -i usb

dmesg читает сгенерированные ядром сообщения из виртуального файла /proc/kmsg. Этот файл обеспечивает интерфейс к кольцевому буферу ядра и может быть открыт только процессом. Если в системе запущен процесс syslog и вы пытаетесь прочитать файл с помощью cat или less, команда зависнет.

Демон syslog сбрасывает сообщения ядра в /var/log/dmesg, так что файл журнала тоже можно использовать:

cat /var/log/dmesg

Отформатируйте вывод dmesg

Команда dmesg предоставляет ряд параметров, позволяющих форматировать и фильтровать вывод.

Одной из наиболее часто используемых опций dmesg является -H ( --human ), которая обеспечивает удобочитаемый вывод:

dmesg -H

Чтобы напечатать удобочитаемые временные метки, используйте параметр -T ( --ctime ):

dmesg -T
[Tue Jan 28 17:07:07 2020] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready

Формат временной метки также можно установить с помощью параметра --time-format <format>, который может быть ctime, reltime, delta, notime или iso. Например, чтобы использовать дельта-формат, введите:

dmesg --time-format=delta

Вы также можете комбинировать два или более вариантов:

dmesg -H -T

Чтобы просмотреть вывод команды dmesg в режиме реального времени, используйте параметр -w ( --follow ):

dmesg --follow

Фильтровать вывод dmesg

Вы можете ограничить вывод команды dmesg определенными структурами и уровнями.

Функция представляет процесс, создавший сообщение. dmesg поддерживает следующие функции журнала:

  • kern - сообщения ядра
  • user - сообщения уровня пользователя
  • mail - почтовая система
  • daemon - системные демоны
  • auth - сообщения безопасности/авторизации
  • syslog — внутренние сообщения syslogd
  • lpr - подсистема построчного принтера
  • news - подсистема сетевых новостей

Параметр -f ( --facility <list> ) позволяет ограничить вывод определенными структурами. Опция принимает одну или несколько структур, разделенных запятыми.

Например, чтобы просмотреть только сообщения ядра и системного демона, вы должны использовать:

dmesg -f kern,daemon

Каждое сообщение журнала связано с уровнем журнала, который показывает важность сообщения. dmesg поддерживает следующие уровни журналов:

  • emerg - система непригодна для использования
  • alert - необходимо принять меры немедленно
  • crit - критическое состояние
  • err - условия ошибки
  • warn - условия предупреждения
  • notice - нормальные, но существенные условия
  • info - информативный
  • debug - сообщения уровня отладки

Опция -l ( --level <list> ) ограничивает вывод определенными уровнями. Опция принимает один или несколько уровней, разделенных запятыми.

Следующая команда отображает только сообщения об ошибках и критические сообщения:

dmesg -l err,crit

Очистить кольцевой буфер

Опция -C ( --clear ) очищает кольцевой буфер:

sudo dmesg -C

Только root или пользователи с привилегиями sudo могут очистить буфер.

Чтобы распечатать содержимое буфера перед очисткой, используйте параметр -c ( --read-clear ):

sudo dmesg -c

Если вы хотите сохранить текущие журналы dmesg в файл перед его удалением, перенаправьте вывод в файл:

dmesg > dmesg_messages

Вывод

Команда dmesg позволяет вам просматривать и управлять буферным кольцом ядра. Это может быть очень полезно при устранении неполадок ядра или оборудования.

Введите в терминале man dmesg, чтобы получить информацию обо всех доступных параметрах команды dmesg.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.