Как пользоваться dmesg

Ядро Linux, как и другие программы может и выводит различные информационные сообщения и сообщения об ошибках. Все они выводятся в буфер сообщения ядра, так называемый kernel ring buffer. Основная причина существования этого буфера - надо сохранить сообщения, которые возникают во время загрузки системы пока сервис Syslog ещё не запущен и не может их собирать.

Для получения сообщений из этого буфера можно просто прочитать файл /var/log/dmesg. Однако, более удобно это можно сделать с помощью команды dmesg. В этой статье мы рассмотрим как пользоваться dmesg. Разберемся с опциями утилиты, а также приведем примеры работы с ней.

Синтаксис и опции dmesg

Синтаксис команды dmesg очень простой. Надо набрать имя команды и если необходимо, то опции:

$ dmesg опции

Опции позволяют управлять выводом, добавлять или скрывать дополнительную информацию и делать просмотр сообщений более удобным. Вот они:

  • -C, --clear - очистить буфер сообщений ядра;
  • -c, --read-clear - вывести сообщения из буфера ядра, а затем очистить его;
  • -d, --show-delta - выводит время прошедшее между двумя сообщениями;
  • -f, --facility - выводить только сообщения от подсистем определенной категории;
  • -H, --human - включить вывод, удобный для человека;
  • -k, --kernel - отображать только сообщения ядра;
  • -L, --color - сделать вывод цветным, автоматически включается при использовании опции -H;
  • -l, --level - ограничить вывод указанным уровнем подробности;
  • -P, --nopager - выводить информацию обычным текстом, не добавлять постраничную навигацию;
  • -r, --raw - печатать сообщения как есть, не убирая служебные префиксы;
  • -S, --syslog - использовать Syslog для чтения сообщений от ядра, по умолчанию используется файл /dev/kmsg;
  • -T, --ctime - выводить время в удобном для человека формате;
  • -t, --notime - не выводить время поступления сообщения;
  • -u, --userspace - показывать только сообщения от программ из пространства пользователя;
  • -w, --follow - после вывода всех сообщений не завершать программу, а ждать новых;
  • -x, --decode - выводить категорию и уровень журналирования в удобном для чтения формате.

Это далеко не все опции, а только самые интересные. Если вы хотите посмотреть другие, воспользуйтесь такой командой:

man dmesg

Поддерживаемые категории журналирования:

  • kern - сообщения от ядра;
  • user - сообщения от программ пространства пользователя;
  • mail - сообщения от сервисов почты;
  • daemon - сообщения от системных служб;
  • auth - сообщения безопасности и информации об авторизации пользователей;
  • syslog - сообщения, отправляемые сервисом Syslogd;
  • lpr - сообщения от служб печати.

А вот доступные уровни журналирования:

  • emerg - ошибка привела к неработоспособности системы;
  • alert - требуется вмешательство пользователя;
  • crit - критическая ошибка;
  • err - обычная ошибка;
  • warn - предупреждение;
  • notine - замечание;
  • info - информация;
  • debug - отладочное сообщение.

Примеры использования dmesg

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

dmesg

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

dmesg -T

Во время загрузки ядро тестирует оборудование и выводит подробную информацию о нём в буфер сообщений ядра. Таким образом, с помощью dmesg можно посмотреть информацию об оборудовании, просто отфильтруйте нужные данные, например CPU:

dmesg | grep CPU

Для того чтобы выводить только сообщения от ядра, а не всё под ряд, используйте опцию -k:

dmesg -k

 

Теперь в выводе утилиты не будет сообщений от Systemd. Если вы хотите выводить все сообщения ядра в реальном времени, используйте опцию -w:

dmesg -w

 

Для того чтобы добавить цвет к выводу и включить постраничную навигацию вместо вывода текста одним большим куском используйте опцию -H:

dmesg -H

Для того чтобы вывести категорию сообщения и его уровень логирования используйте опцию -x:

dmesg -x

Если вас интересуют только ошибки, можно отсеять их по уровню журналирования:

dmesg -l crit,err

Или только информационные сообщения:

dmesg -l warn

Можно вывести только сообщения, которые попали сюда из пространства пользователя, для этого используйте опцию -u:

dmesg -u

 

Или же отфильтруйте категории user и daemon с помощью опции -f:

dmesg -f user,daemon

Аналогичным образом вы можете фильтровать и другие категории. Если вы хотите очистить буфер сообщений ядра, используйте опцию -C. При следующем запуске dmesg там будет пусто:

dmesg -C

Выводы

В этой небольшой статье мы разобрали как пользоваться dmesg. Теперь вы знаете за что отвечает эта утилита, а также какие опции можно использовать.

Один комментарий

  1. Аватар Дмитрий Герасимов 7 января, 2021 Ответить

Ответить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: