User Tools

Site Tools


dmesg

dmesg

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

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

Синтаксис

dmseg [options...]

Опции

  • -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 – отладочное сообщение.

Examples

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

dmesg
 
[    0.000000] Linux version 5.4.72-microsoft-standard-WSL2 (oe-user@oe-host) (gcc version 8.2.0 (GCC)) #1 SMP Wed Oct 28 23:40:43 UTC 2020
[    0.000000] Command line: initrd=\initrd.img panic=-1 pty.legacy_count=0 nr_cpus=8
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'compacted' format.

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

dmesg -T
 
[Tue Mar  8 21:45:13 2022] Linux version 5.4.72-microsoft-standard-WSL2 (oe-user@oe-host) (gcc version 8.2.0 (GCC)) #1 SMP Wed Oct 28 23:40:43 UTC 2020
[Tue Mar  8 21:45:13 2022] Command line: initrd=\initrd.img panic=-1 pty.legacy_count=0 nr_cpus=8
[Tue Mar  8 21:45:13 2022] KERNEL supported cpus:
[Tue Mar  8 21:45:13 2022]   Intel GenuineIntel
[Tue Mar  8 21:45:13 2022]   AMD AuthenticAMD
[Tue Mar  8 21:45:13 2022]   Centaur CentaurHauls
[Tue Mar  8 21:45:13 2022] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[Tue Mar  8 21:45:13 2022] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[Tue Mar  8 21:45:13 2022] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'

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

dmesg | grep CPU
 
# Либо о дисках
dmesg | grep sda

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

dmesg -k

Если нужно выводить все сообщения ядра в реальном времени, используем опцию -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

Работаем с выводом:

# первые 20 строк вывода
dmesg | head  -20
 
# последние 20 строк вывода
dmesg | tail -20
 
# больше меньше
dmesg | more
dmesg | less
dmesg.txt · Last modified: 2023/04/06 10:28 (external edit)