Команда Dmesg в Linux

Команда dmesg в Linux

Ядро 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
 [Mon Oct 14 14:38:04 2019] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready

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

 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 ) позволяет ограничить вывод определёнными объектами. Параметр принимает один или несколько объектов, разделённых запятыми.

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

 dmesg -f kern,daemon

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

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

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

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

 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 .

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

терминал ядра dmesg

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *