Команда Dmesg в Linux
Команда Dmesg в Linux
Dmesg Command in Linux
В этом руководстве мы рассмотрим основы dmesg команды.

Ядро Linux - это ядро операционной системы, которое контролирует доступ к системным ресурсам, таким как процессор, устройства ввода-вывода, физическая память и файловые системы. Ядро записывает различные сообщения в кольцевой буфер ядра в процессе загрузки и во время работы системы. Эти сообщения содержат различную информацию о работе системы.
Кольцевой буфер ядра - это часть физической памяти, которая содержит сообщения журнала ядра. Он имеет фиксированный размер, что означает, что после заполнения буфера старые записи журналов перезаписываются.
dmesg -
Утилита командной строки используется для печати и управления кольцевого буфера ядра в Linux и других Unix-подобных операционных систем. Это полезно для изучения загрузочных сообщений ядра и устранения проблем, связанных с оборудованием.
Использование dmesg
команды
Синтаксис dmesg
команды следующий:
dmesg [OPTIONS]
При вызове без каких-либо параметров dmesg
записывает все сообщения из кольцевого буфера ядра в стандартный вывод:
dmesg
По умолчанию все пользователи могут запускать dmesg
команду. Однако в некоторых системах доступ к ним dmesg
может быть ограничен для пользователей без полномочий root. В этой ситуации при вызове dmesg
вы получите сообщение об ошибке, как показано ниже:
dmesg: read kernel buffer failed: Operation not permitted
Параметр ядра kernel.dmesg_restrict
указывает, могут ли непривилегированные пользователи dmesg
просматривать сообщения из буфера журнала ядра. Чтобы снять ограничения, установите его на ноль:
sudo sysctl -w kernel.dmesg_restrict=0
Обычно выходные данные содержат много строк информации, так что только последняя часть выходных данных является видимой. Чтобы увидеть одну страницу за раз, перенаправьте вывод в утилиту пейджера, такую как less
или more
:
dmesg --color=always | less
--color=always
Используется для сохранения цветного вывода.
Если вы хотите фильтровать сообщения буфера, используйте grep
. Например, чтобы просмотреть только сообщения, связанные с USB, вы должны набрать:
dmesg | grep -i usb
читает сообщения, сгенерированные ядром, из
dmesg /proc/kmsg
виртуального файла. Этот файл предоставляет интерфейс к кольцевому буферу ядра и может быть открыт только одним процессом. Если syslog
в вашей системе запущен процесс, и вы пытаетесь прочитать файл с помощью cat
, или less
, команда зависнет.
syslog
Демон отвалов сообщения ядра /var/log/dmesg
, так что вы можете использовать этот файл журнала:
cat /var/log/dmesg
Форматирование dmesg
вывода
Команда dmesg
предоставляет ряд опций, которые помогут вам отформатировать и отфильтровать вывод.
Одна из наиболее часто используемых опций dmesg
- это -H
( --human
), которая обеспечивает удобочитаемый вывод. Эта опция направляет вывод команды в пейджер:
dmesg -H
Для печати удобочитаемых временных меток используйте опцию -T
( --ctime
):
dmesg -T
[Mon Oct 14 14:38:04 2019] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready
Формат
--time-format <format>
отметок времени также может быть установлен с помощью параметра, который может быть ctime, reltime, delta, notime или iso. Например, чтобы использовать дельта-формат, введите:
dmesg --time-format=delta
Вы также можете объединить два или более вариантов:
dmesg -H -T
Чтобы просмотреть вывод dmesg
команды в режиме реального времени, используйте параметр -w
( --follow
):
dmesg --follow
Фильтрация dmesg
вывода
Вы можете ограничить dmesg
вывод данными объектами и уровнями.
Средство представляет процесс, который создал сообщение. dmesg
поддерживает следующие возможности журнала:
kern
- сообщения ядраuser
- сообщения уровня пользователяmail
- почтовая системаdaemon
- системные демоныauth
- сообщения безопасности / авторизацииsyslog
- внутренние сообщения syslogdlpr
- подсистема линейного принтераnews
- подсистема сетевых новостей
Опция -f
( --facility <list>
) позволяет ограничить вывод определенными объектами. Опция принимает одно или несколько разделенных запятыми объектов.
Например, для отображения только сообщений ядра и системных демонов вы должны использовать:
dmesg -f kern,daemon
Каждое сообщение журнала связано с уровнем журнала, который показывает важность сообщения. dmesg
поддерживает следующие уровни журнала:
emerg
- система неработоспособнаalert
- действие должно быть предпринято немедленноcrit
- критические условияerr
- условия ошибкиwarn
- условия предупрежденияnotice
- нормальное, но значимое состояниеinfo
- информационныйdebug
- сообщения уровня отладки
Опция -l
( --level <list>
) ограничивает вывод определенными уровнями. Опция принимает один или несколько уровней, разделенных запятыми.
Следующая команда отображает только сообщения об ошибках и критические сообщения:
dmesg -l err,crit
Очистка кольцевого буфера
Опция -C
( --clear
) позволяет очистить кольцевой буфер:
sudo dmesg -C
Только root или пользователи с привилегиями sudo могут очистить буфер.
Чтобы распечатать содержимое буфера перед очисткой, используйте параметр -c
( --read-clear
):
sudo dmesg -c
Если вы хотите сохранить текущие dmesg
журналы в файле перед его очисткой, перенаправьте вывод в файл:
dmesg > dmesg_messages
Вывод
Команда dmesg
позволяет вам просматривать и контролировать кольцевой буфер ядра. Это может быть очень полезно при устранении проблем с ядром или оборудованием.
Введите man dmesg
в своем терминале информацию о всех доступных dmesg
опциях.