Ядро 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. Теперь вы знаете за что отвечает эта утилита, а также какие опции можно использовать.
Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали














Спасибо, друг! Оказывается, о некоторях тонкостях я не знал... В мемориз, однозначно!
как использовать команду для подключения смартфона к Linux ,- через АDB он его упорно не видит и пpавило udev есть ?
Подскажите как вывести в ADB на консоль ПК сообщения dmesg во время загрузки девайса типа смартфона или ТВ бокса? Нужна информация об оборудовании, а после загрузки её уже нет в логе dmesg.