Table of Contents
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