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

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

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

В этой статье мы рассмотрим основы команды 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- это -H( –human), который обеспечивает удобочитаемый вывод. Эта опция направляет вывод команды в терминал:

dmesg -H

 

Для печати удобочитаемых временных отметок используйте опцию -T( –ctime):

dmesg -T

 

[Mon Oct 07 23:12:43 2019] 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, поддерживает следующие возможности журнала:

  • 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.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник: AndreyEx.ru