Перейти к основному содержанию

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

Linux

Ядро операционной системы 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

dmesg

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

dmesg -C

Примечания

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

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

echo "Test dmesg message" > /dev/kmsg

Ссылки

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

Теги

 

Похожие материалы

Seafile сервер для Linux версия 7.0.2

13 июня 2019 года вышла новая версия сервера Seafile для Linux — 7.0.2. Релиз уже не помечен как beta. Прошлый раз я пробовал обновить Seafile Server 6.3 до версии 7.0.0, но были проблемы и прошлось откатиться. На этот раз релиз получше. Обновлённый до 7.0.2 сервер заработал без ошибок. Да, да, прежде чем написать новость, я проверил версию на себе. Интерфейс стал удобнее и приятнее.