Что такое dmesg?
dmesg — это сокращение от 'display message' или 'driver message', которое выводит сообщения, хранящиеся в кольцевом буфере ядра Linux. Оно показывает, как аппаратное обеспечение было распознано, как были загружены драйверы или какие ошибки произошли, в хронологическом порядке с момента загрузки системы до настоящего времени.
Ключевые функции и назначение
dmesg используется для диагностики событий, происходящих на самом низком уровне системы (ядре).
- Просмотр загрузочных сообщений: Просмотр всех сообщений ядра, выводимых при запуске системы.
- Диагностика аппаратного обеспечения: Просмотр логов при подключении или отключении нового оборудования (USB, дисков и т.д.).
- Ошибки драйверов: Отслеживание причин сбоев загрузки драйверов или ошибок уровня ядра (Kernel Panic).
- Кольцевой буфер: Размер буфера фиксирован, поэтому старые записи перезаписываются новыми.
Основные опции (Shell)
dmesg часто используется в сочетании с другими командами (grep, less) через пайп (|), но также имеет свои собственные полезные опции.
1. Формат вывода и время
2. Фильтрация и мониторинг в реальном времени
3. Управление буфером/консолью (требует осторожности)
Сгенерированная команда:
Комбинируйте команды.
Описание:
`dmesg` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Примеры сценариев использования (Shell)
dmesg часто используется с grep для фильтрации только нужной информации.
Просмотр всех сообщений (с разбивкой на страницы)
dmesg | less
Самое базовое использование. Удобно прокручивать с помощью less.
Просмотр новых сообщений в реальном времени (в удобочитаемом формате)
dmesg -wH
Комбинация -w (реальное время) и -H (удобное для чтения время).
Фильтрация только сообщений, связанных с USB
dmesg | grep -i usb
Опция -i команды grep игнорирует регистр.
Фильтрация сообщений, связанных с дисками (SATA/NVMe)
dmesg | grep -iE 'sd[a-z]|nvme'
Используйте grep -E (расширенные регулярные выражения) для поиска логов, содержащих 'sd[a-z]' или 'nvme'.
Фильтрация только ошибок (Error) или предупреждений (Warn)
dmesg -H -l err,warn
Укажите уровень логов с помощью опции -l.
Просмотр только последних 10 строк сообщений
dmesg | tail -n 10
Используйте tail для быстрого просмотра только последних сообщений.
Просмотр с включением тегов facility/level
dmesg -xT | less
Опция -x помогает понять, декодируя facility/level.
Сохранить логи в файл
dmesg -T > ~/dmesg-$(date +%F-%H%M).log
Сохраняет полный вывод dmesg сразу после загрузки.
Установка
dmesg входит в пакет util-linux и поставляется по умолчанию в большинстве дистрибутивов Linux.
Установлено по умолчанию
Отдельная установка не требуется. Если его нет, установите пакет 'util-linux' для вашего дистрибутива.
Советы и примечания
dmesg против journalctl
- Среда systemd: В современных системах systemd можно просматривать интегрированные системные логи, выходящие за рамки dmesg, с помощью 'journalctl -k' (логи ядра) или 'journalctl -b' (логи текущей загрузки).
- Формат времени: Время в стандартном выводе dmesg — это [время, прошедшее с момента загрузки (в секундах)]. Чтобы увидеть фактическое время, используйте опции '-H' или '-T'.
- Перезапись буфера: Из-за особенностей кольцевого буфера старые сообщения могут исчезнуть. Если необходимо сохранить логи с начала загрузки, проверьте их с помощью 'journalctl -b 0' или сохраните вывод dmesg в файл.
- Права/Безопасность: Некоторые дистрибутивы ограничивают доступ обычных пользователей к dmesg с помощью '/proc/sys/kernel/dmesg_restrict=1'. В этом случае используйте 'sudo dmesg' или 'sudo journalctl -k'.
- Очистка логов (-c, -C): 'dmesg -c' и '-C' полезны для отладки, но после очистки восстановить данные невозможно. Используйте их с осторожностью в производственной среде.