Найти в Дзене

Шпаргалка по dmesg

Ядро операционной системы Linux как любая программа может выводить информационные сообщения, сообщения об ошибках, критические сообщения в специальный буфер, который называется kernel ring buffer. В процессе загрузки операционной системы сервис Syslog ещё не запущен, именно поэтому сообщения ядра пишутся в отдельный буфер. Кольцевой буфер — это пространство памяти, зарезервированное для сообщений. Он прост по конструкции и имеет фиксированный размер. Когда он заполнен, новые сообщения перезаписывают самые старые сообщения. Для получения данных из буфера можно прочитать файл /var/log/dmesg. Но удобнее это делать с помощью команды dmesg. Дебажим и траблшутим вместе. Кольцевой буфер является хорошим местом для начала расследования аппаратных ошибок или других проблем с запуском. Синтаксис команды dmesg dmesg опции Посмотреть список опций: dmesg -h
dmesg --help
man dmesg Основные опции dmesg Категории журналирования Уровни журналирования Вывод всех сообщений. По умолчанию перед сообщением
Оглавление

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

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

Для получения данных из буфера можно прочитать файл /var/log/dmesg. Но удобнее это делать с помощью команды dmesg.

dmesg

Дебажим и траблшутим вместе. Кольцевой буфер является хорошим местом для начала расследования аппаратных ошибок или других проблем с запуском.

Синтаксис команды dmesg

dmesg опции

Посмотреть список опций:

dmesg -h
dmesg --help
man dmesg

Основные опции dmesg

  • -C, --clear - очистка буфера
  • -c, --read-clear - вывести сообщения и очистить буфер
  • -D, --console-off - отключить вывод сообщений в консоль
  • -E, --console-on -  включить вывод сообщений в консоль
  • -F, --file <file> - использовать файл вместо буфера журнала ядра
  • -f, --facility <list> - ограничить вывод на определённые объекты
  • -H, --human - человекочитаемый вывод
  • -k, --kernel - вывести только сообщения ядра
  • -L, --color[=<when>] - раскрашивать сообщения (авто, всегда или никогда), цветной шрифт по умолчанию поддерживается
  • -l, --level <list> - ограничить вывод указанным уровнем подробности
  • -n, --console-level <level> - установить уровень сообщений, выводимых на консоль
  • -P, --nopager - выводить информацию без постраничной навигации
  • -p, --force-prefix - принудительно выводить временную метку в каждой строке многострочных сообщений
  • -r, --raw - печатать сообщения как есть вместе со служебными префиксами
  • --noescape - не экранировать непечатные символы
  • -S, --syslog - использовать Syslog для чтения сообщений от ядра, по умолчанию используется файл /dev/kms
  • -s, --buffer-size <size> - размер буфера для запроса кольцевого буфера ядра
  • -u, --userspace - показывать только сообщения из пространства пользователя
  • -w, --follow - вывести сообщения и ждать новые
  • -W, --follow-new - ждать новые сообщения
  • -x, --decode - выводить категорию и уровень журналирования в удобном для чтения формате
  • -d, --show-delta - показывать разницу во времени между сообщениями
  • -e, --reltime - показывать время и дельту времени в удобочитаемом формате
  • -T, --ctime - выводить время в удобном для человека формате
  • -t, --notime - не показывать время
  • --time-format <format> - показывать временную метку, используя заданный формат:                               [delta|reltime|ctime|notime|iso]
  • --since <time> - задать начальное время
  • --until <time> - задать конечное время
  • -h, --help - помощь
  • -V, --version - версия

Категории журналирования

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

Уровни журналирования

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

Примеры

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

dmesg

Если нужно отобразить время в читаемом формате, то:

dmesg -T

Поиск:

dmesg | grep nvme
dmesg | grep -i USB
dmesg | grep -E "(mpt|scsi|sd)" | less

Только сообщения ядра:

dmesg -k

Ловить новые сообщения:

dmesg -w
dmwsg -W

Раскрасить и включить постраничную навигацию:

dmesg -H

Добавить категорию и уровень логирования:

dmesg -x

Отобразить только ошибки:

dmesg -l crit,err

Сообщения пользователя:

dmesg -u

Или отфильтровать по категориям:

dmesg -f user,daemon
-2

Очистить буфер (не делайте это на проде):

dmesg -C

Примечания

dmesg -T не гарантирует того, что вы увидите реальное время.

Проверить какое время отображается в dmesg можно записав тестовое сообщение:

echo "Test dmesg message" > /dev/kmsg

Ссылки

Ubuntu Server — узнать причину перезагрузки

Источник:

Шпаргалка по dmesg | internet-lab.ru

💰 Поддержать проект

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.