- Руководство по команде dmesg для начинающих
- Команда Linux dmesg
- Q1. Как использовать команду dmesg?
- Q2. Как ограничить вывод только ошибками и предупреждениями?
- Q3. Как заставить dmesg выводить временные метки?
- Q4. Как заставить dmesg отображать информацию, специфичную для устройства?
- Q5. Как заставить dmesg отображать только сообщения пользователя?
- Заключение
- Команда Dmesg в Linux
- Dmesg Command in Linux
- В этом руководстве мы рассмотрим основы dmesg команды.
- Использование dmesg команды
- Форматирование dmesg вывода
- Фильтрация dmesg вывода
- Очистка кольцевого буфера
- Вывод
- Команда Dmesg в Linux
- Использование команды dmesg
- Формирование вывода dmesg
- Что такое dmesg linux
- Примеры использования
- Вывод всех сообщений ядра ОС
- Вывод важных сообщений
- Вывод сообщений, относящихся к определенным устройствам
- Вывод всех сообщений из пространства пользователя
Руководство по команде dmesg для начинающих
Оригинал: Linux dmesg Command Tutorial for Beginners (5 Examples)
Автор: Himanshu Arora
Дата публикации: 3 июля 2018 года
Перевод: А. Кривошей
Дата перевода: январь 2019 г.
Знаете ли вы, что ядро Linux загружает несколько драйверов устройств при загрузке системы? На самом деле, когда ваша система запущена и работает, и вы подключаете аппаратное устройство, то также загружается соответствующий драйвер устройства. Конечно, ядро также делает много других вещей. Что если вы хотите узнать информацию, связанную с этими действиями ядра?
Есть команда dmesg, которую вы можете использовать, если хотите получить доступ к сообщениям, выводимым ядром. В этом руководстве мы разберемся, как работает утилита dmesg, используя несколько простых для понимания примеров.
Команда Linux dmesg
Команда dmesg позволяет вам печатать или управлять буфером кольца ядра. Ниже ее синтаксис:
И вот как справочная страница утилиты объясняет ее назначение:
dmesg используется для проверки содержимого или управления буфером кольца ядра. Действие по умолчанию — отобразить все сообщения из буфера кольца ядра.
Ниже приведены примеры в стиле вопрос/ответ, которые должны дать вам лучшее представление о том, как работает команда dmesg.
Q1. Как использовать команду dmesg?
Вы можете для начала ввести команду dmesg без опций командной строки.
Например, вот небольшая часть вывода команды, созданной в моем случае:
Q2. Как ограничить вывод только ошибками и предупреждениями?
Если вы запустите dmesg в своей системе, вы увидите, что она выводит множество информации. В зависимости от того, что вы ищете, вы можете фильтровать или ограничивать вывод. Со своей стороны, dmesg предлагает вам реализацию этой возможности с помощью «уровней». Ниже приводится полный список уровней (вместе с их объяснением):
emerg — система не работает;
alert — действие должно быть выполнено немедленно;
crit — критические условия;
err — условия ошибок;
warn — условия предупреждениий;
notice — нормальное, но существенное состояние;
info — информационный;
debug — сообщения уровня отладки.
Например, если вы хотите ограничить вывод только ошибками и предупреждениями, вы можете сделать это следующим образом:
В моем случае, вот часть вывода, который выдает указанная выше команда:
Q3. Как заставить dmesg выводить временные метки?
Иногда вам может понадобиться, чтобы с сообщениями, создаваемыми dmesg, была связана временная метка. Это можно сделать с помощью параметра командной строки -T, который создает удобочитаемые временные метки.
Q4. Как заставить dmesg отображать информацию, специфичную для устройства?
Предположим, вы хотите, чтобы dmesg отображал только информацию, связанную с интерфейсом eth0. Вот как вы можете это сделать:
Q5. Как заставить dmesg отображать только сообщения пользователя?
Если вы хотите ограничить вывод dmesg только сообщениями в пользовательском пространстве, используйте параметр командной строки -u.
Заключение
Согласен, dmesg — это не та команда, которая будет вам нужна каждый день. Но это инструмент, к которому можно обратиться, когда кто-то (к кому вы обратились за помощью по определенной теме) попросит вас предоставить сообщения ядра. Чаще всего я встречал этот случай на онлайн-форумах, где опытные пользователи запрашивают вывод ядра.
Здесь, в этом уроке, мы обсудили команду dmesg с точки зрения начинающих. Более подробную информацию можно получить, изучив справочную страницу команды.
Источник
Команда Dmesg в Linux
Dmesg Command in Linux
В этом руководстве мы рассмотрим основы dmesg команды.
Ядро Linux — это ядро операционной системы, которое контролирует доступ к системным ресурсам, таким как процессор, устройства ввода-вывода, физическая память и файловые системы. Ядро записывает различные сообщения в кольцевой буфер ядра в процессе загрузки и во время работы системы. Эти сообщения содержат различную информацию о работе системы.
Кольцевой буфер ядра — это часть физической памяти, которая содержит сообщения журнала ядра. Он имеет фиксированный размер, что означает, что после заполнения буфера старые записи журналов перезаписываются.
dmesg — Утилита командной строки используется для печати и управления кольцевого буфера ядра в Linux и других Unix-подобных операционных систем. Это полезно для изучения загрузочных сообщений ядра и устранения проблем, связанных с оборудованием.
Использование dmesg команды
Синтаксис dmesg команды следующий:
При вызове без каких-либо параметров dmesg записывает все сообщения из кольцевого буфера ядра в стандартный вывод:
По умолчанию все пользователи могут запускать dmesg команду. Однако в некоторых системах доступ к ним dmesg может быть ограничен для пользователей без полномочий root. В этой ситуации при вызове dmesg вы получите сообщение об ошибке, как показано ниже:
Параметр ядра kernel.dmesg_restrict указывает, могут ли непривилегированные пользователи dmesg просматривать сообщения из буфера журнала ядра. Чтобы снять ограничения, установите его на ноль:
Обычно выходные данные содержат много строк информации, так что только последняя часть выходных данных является видимой. Чтобы увидеть одну страницу за раз, перенаправьте вывод в утилиту пейджера, такую как less или more :
—color=always Используется для сохранения цветного вывода.
Если вы хотите фильтровать сообщения буфера, используйте grep . Например, чтобы просмотреть только сообщения, связанные с USB, вы должны набрать:
dmesg читает сообщения, сгенерированные ядром, из /proc/kmsg виртуального файла. Этот файл предоставляет интерфейс к кольцевому буферу ядра и может быть открыт только одним процессом. Если syslog в вашей системе запущен процесс, и вы пытаетесь прочитать файл с помощью cat , или less , команда зависнет.
syslog Демон отвалов сообщения ядра /var/log/dmesg , так что вы можете использовать этот файл журнала:
Форматирование dmesg вывода
Команда dmesg предоставляет ряд опций, которые помогут вам отформатировать и отфильтровать вывод.
Одна из наиболее часто используемых опций dmesg — это -H ( —human ), которая обеспечивает удобочитаемый вывод. Эта опция направляет вывод команды в пейджер:
Для печати удобочитаемых временных меток используйте опцию -T ( —ctime ):
Формат —time-format отметок времени также может быть установлен с помощью параметра, который может быть ctime, reltime, delta, notime или iso. Например, чтобы использовать дельта-формат, введите:
Вы также можете объединить два или более вариантов:
Чтобы просмотреть вывод dmesg команды в режиме реального времени, используйте параметр -w ( —follow ):
Фильтрация dmesg вывода
Вы можете ограничить dmesg вывод данными объектами и уровнями.
Средство представляет процесс, который создал сообщение. dmesg поддерживает следующие возможности журнала:
- kern — сообщения ядра
- user — сообщения уровня пользователя
- mail — почтовая система
- daemon — системные демоны
- auth — сообщения безопасности / авторизации
- syslog — внутренние сообщения syslogd
- lpr — подсистема линейного принтера
- news — подсистема сетевых новостей
Опция -f ( —facility
) позволяет ограничить вывод определенными объектами. Опция принимает одно или несколько разделенных запятыми объектов.
Например, для отображения только сообщений ядра и системных демонов вы должны использовать:
Каждое сообщение журнала связано с уровнем журнала, который показывает важность сообщения. dmesg поддерживает следующие уровни журнала:
- emerg — система неработоспособна
- alert — действие должно быть предпринято немедленно
- crit — критические условия
- err — условия ошибки
- warn — условия предупреждения
- notice — нормальное, но значимое состояние
- info — информационный
- debug — сообщения уровня отладки
Опция -l ( —level
) ограничивает вывод определенными уровнями. Опция принимает один или несколько уровней, разделенных запятыми.
Следующая команда отображает только сообщения об ошибках и критические сообщения:
Очистка кольцевого буфера
Опция -C ( —clear ) позволяет очистить кольцевой буфер:
Только root или пользователи с привилегиями sudo могут очистить буфер.
Чтобы распечатать содержимое буфера перед очисткой, используйте параметр -c ( —read-clear ):
Если вы хотите сохранить текущие dmesg журналы в файле перед его очисткой, перенаправьте вывод в файл:
Вывод
Команда dmesg позволяет вам просматривать и контролировать кольцевой буфер ядра. Это может быть очень полезно при устранении проблем с ядром или оборудованием.
Введите man dmesg в своем терминале информацию о всех доступных dmesg опциях.
Источник
Команда Dmesg в Linux
Ядро Linux — это ядро операционной системы, которое контролирует доступ к системным ресурсам, таким как ЦП, устройства ввода-вывода, физическая память и файловые системы. Ядро записывает различные сообщения в кольцевой буфер ядра во время процесса загрузки и во время работы системы. Эти сообщения содержат различную информацию о работе системы.
Кольцевой буфер ядра — это часть физической памяти, в которой хранятся сообщения журнала ядра. Он имеет фиксированный размер, что означает, что после заполнения буфера старые записи журналов перезаписываются.
Утилита командной строки dmesg используется для печати и управления кольцевым буфером ядра в Linux и других Unix-подобных операционных системах. Это полезно для изучения сообщений загрузки ядра и отладки проблем, связанных с оборудованием.
В этом руководстве мы рассмотрим основы команды dmesg .
Использование команды dmesg
Синтаксис команды dmesg следующий:
При запуске без каких-либо параметров dmesg записывает все сообщения из кольцевого буфера ядра в стандартный вывод:
По умолчанию все пользователи могут запускать команду dmesg . Однако в некоторых системах доступ к dmesg может быть ограничен для пользователей без полномочий root. В этой ситуации при вызове dmesg вы получите сообщение об ошибке, подобное приведенному ниже:
Параметр ядра kernel.dmesg_restrict указывает, могут ли непривилегированные пользователи использовать dmesg для просмотра сообщений из буфера журнала ядра. Чтобы снять ограничения, установите его на ноль:
Обычно вывод содержит много строк информации, поэтому видна только последняя часть вывода. Чтобы видеть по одной странице за раз, направьте вывод в утилиту пейджера, например, less или more :
—color=always используется для сохранения цветного вывода.
Если вы хотите фильтровать сообщения буфера, используйте grep . Например, чтобы просмотреть только сообщения, относящиеся к USB, вы должны ввести:
dmesg читает сообщения, генерируемые ядром, из виртуального файла /proc/kmsg . Этот файл предоставляет интерфейс для кольцевого буфера ядра и может быть открыт только одним процессом. Если в вашей системе запущен процесс syslog и вы пытаетесь прочитать файл с помощью cat или less , команда зависнет.
Демон syslog выгружает сообщения ядра в /var/log/dmesg , поэтому вы также можете использовать этот файл журнала:
Формирование вывода dmesg
Команда dmesg предоставляет ряд параметров, которые помогут вам отформатировать и отфильтровать вывод.
Один из наиболее часто используемых параметров dmesg — -H ( —human ), который позволяет выводить данные в удобочитаемом для человека —human . Эта опция направляет вывод команды в пейджер:
Чтобы напечатать удобочитаемые метки времени, используйте параметр -T ( —ctime ):
Формат временных меток также можно установить с помощью параметра —time-format
Источник
Что такое dmesg linux
Команда dmesg предназначена для задействования одноименной утилиты, осуществляющей вывод сообщений ядра ОС. В процессе загрузки и функционирования операционной системы ее ядро генерирует множество сообщений, которые позволяют диагностировать различные проблемы с аппаратным и программным обеспечением. Если говорить более предметно, ядро Linux записывает сообщения в кольцевой буфер (область памяти фиксированного размера, в которой осуществляется перезапись устаревших сообщений при добавлении новых), а утилита использует специальный файл /proc/kmesg для доступа к содержимому этого буфера. Данная команда может оказаться крайне полезной в процессе диагностики состояния устройств системы, поэтому ее стоит использовать в первую очередь при возникновении любых аппаратных сбоев.
Базовый синтаксис команды выглядит следующим образом:
Стоит отметить, что в некоторых дистрибутива команда может исполняться лишь от лица пользователя root (что вполне логично, ведь диагностика системы — дело системного администратора). Вообще, утилита может принимать большое количество различных параметров, но чаще всего используется без них. Наиболее полезными ее параметрами являются такие, как параметр -T, позволяющий выводить понятные человеку метки времени, параметры -k и -u, позволяющие выводить лишь сообщения, относящиеся к пространству ядра и пространству пользователя соответственно, параметр -c, позволяющий очистить содержимое кольцевого буфера ядра после вывода, параметр -w, позволяющий вместо завершения работы утилиты ожидать новые сообщения, а также параметры —level и —facility, позволяющие указать приоритет и источник интересующих пользователя сообщений.
В качестве приоритетов сообщений могут использоваться следующие идентификаторы:
Идентификатор | Значение |
emerg | Сообщения о событиях, сделавших систему неработоспособной |
alert | Сообщения о событиях, на которые пользователь должен немедленно отреагировать |
crit | Сообщения о критических событиях |
err | Сообщения об ошибках |
warn | Предупреждения |
notice | Сообщения о важных событиях |
info | Информационные сообщения |
debug | Отладочные сообщения |
В качестве источников сообщений — следующие идентификаторы:
Идентификатор | Значение |
kern | Сообщения от ядра ОС |
user | Сообщения из пространства пользователя |
Сообщения от подсистемы отправки электронной почты | |
daemon | Сообщения от системных служб (демонов) |
auth | Сообщения от системы безопасности/авторизации |
syslog | Сообщения от службы системных журналов (для внутреннего использования) |
lpr | Сообщения от подсистемы печати |
news | Сообщения от подсистемы сетевых новостей |
Также нередко для фильтрации вывода dmesg используются такие утилиты, как grep, head, tail, less и more поэтому для продуктивной работы с утилитой dmesg не помешает ознакомиться и с их функциями.
Примеры использования
Вывод всех сообщений ядра ОС
Для вывода всех сообщений ядра ОС может использоваться утилита dmesg без каких-либо параметров:
# dmesg
[ 0.000000] microcode: microcode updated early to revision 0xd0, date = 2010-09-30
[ 0.000000] Linux version 4.18.0-2-amd64 ([email protected]) (gcc version 7.3.0 (Debian 7.3.0-29)) #1 SMP Debian 4.18.10-2 (2018-10-07)
…
Далее будет выведено большое количество системных сообщений, многие из которых могут представлять интерес, особенно в случае неполадок.
Если вам нужно постепенно изучить все сообщения, вы можете воспользоваться утилитами less и more:
# dmesg | more
[ 0.000000] microcode: microcode updated early to revision 0xd0, date = 2010-09-30
[ 0.000000] Linux version 4.18.0-2-amd64 ([email protected]) (gcc version 7.3.0 (Debian 7.3.0-29)) #1 SMP Debian 4.18.10-2 (2018-10-07)
…
—More—
# dmesg | less
[ 0.000000] microcode: microcode updated early to revision 0xd0, date = 2010-09-30
[ 0.000000] Linux version 4.18.0-2-amd64 ([email protected]) (gcc version 7.3.0 (Debian 7.3.0-29)) #1 SMP Debian 4.18.10-2 (2018-10-07)
…
:
Утилита less позволяет проматывать сообщения как вперед, так и назад, утилита more — только вперед.
Вывод важных сообщений
Для вывода исключительно важных сообщений следует использовать соответствующие приоритеты:
# dmesg —level=emerg,alert,crit,err,warn
[ 0.032000] core: PEBS disabled due to CPU errata
[ 0.036206] mtrr: your CPUs had inconsistent variable MTRR settings
[ 0.053809] pci 0000:00:01.0: ASPM: current common clock configuration is broken, reconfiguring
[ 0.088573] pci 0000:03:00.0: [Firmware Bug]: disabling VPD access (can’t determine size of non-standard VPD format)
…
Очевидно, что теперь в выводе отражены лишь явные проблемы с аппаратным обеспечением, которые в моем случае были решены ядром самостоятельно.
Вывод сообщений, относящихся к определенным устройствам
Для вывода всех сообщений, относящихся к определенным устройствам, достаточно отфильтровать вывод утилиты с помощью утилиты grep:
# dmesg | grep dvb
[ 13.019352] dvbdev: DVB: registering new adapter (Mantis DVB adapter)
[ 13.143788] dvb-usb: found a ‘Mygica T230 DVB-T/T2/C’ in warm state.
[ 13.384098] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 13.384305] dvbdev: DVB: registering new adapter (Mygica T230 DVB-T/T2/C)
[ 13.944318] rc rc0: lirc_dev: driver dvb_usb_cxusb registered at minor = 0, scancode receiver, no transmitter
[ 13.944319] dvb-usb: schedule remote query interval to 100 msecs.
[ 13.944509] dvb-usb: Mygica T230 DVB-T/T2/C successfully initialized and connected.
Это информация обо всех подключенных к компьютеру DVB-картах. Аналогичным образом можно получить все сообщения, относящиеся к устройствам других типов.
Вывод всех сообщений из пространства пользователя
Для вывода всех сообщений из пространства пользователя достаточно воспользоваться параметром -u утилиты dmesg:
# dmesg -u
[ 7.483329] systemd[1]: systemd 239 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
[ 7.500111] systemd[1]: Detected architecture x86-64.
[ 7.527333] systemd[1]: Set hostname to .
…
Очевидно, что это сообщения от менеджера инициализации systemd.
Источник