В чем разница между выводом dmesg и / var / log / messages?

55

AFAIK dmesgпоказывает информацию о ядре и модулях ядра, а /var/log/messagesтакже показывает информацию, производимую ядром и модулями.

Так в чем же разница? Имеет ли /var/log/messages выход dmesg?

Дополнительная информация, которая может быть полезна:
- Существует кольцевой буфер ядра , который, я думаю, является единственным и единственным местом для хранения данных журнала ядра.
- В статье « Регистрация ядра: API и реализация » в IBM DeveloperWorks описаны API и картина птичьего полета.

xanpeng
источник

Ответы:

51

dmesgпечатает содержимое кольцевого буфера Эта информация также отправляется в режиме реального времени syslogdили klogd, когда они запущены, и заканчивается в /var/log/messages; Параметр когда dmesgнаиболее полезен при захвате сообщений времени загрузки до syslogdи / или klogdзапуска, чтобы они правильно регистрировались.

geekosaur
источник
4
Так /var/log/messagesи dmesgбудут ли показываться одни и те же логи (в другом формате) после syslogdи / или klogdзапуска?
xanpeng
10
После klogdзапуска dmesgпокажет только самые последние сообщения ядра (поскольку кольцевой буфер имеет фиксированный размер и поэтому может хранить только столько), без временных отметок или другой информации, при этом /var/log/messagesбудет сохранять журналы в соответствии с logrotateнастройкой и включать временные отметки (которые будет немного неточным для начальных загрузочных сообщений, потому dmesgчто их нет, поэтому начальное время klogdиспользуется для всех сообщений, читаемых из буфера ядра).
geekosaur
6
@xanpeng dmesgсодержит только сообщения из ядра, /var/log/messagesобычно также содержит журналы из приложений.
Жиль "ТАК - перестань быть злым"
14

Это зависит от операционной системы. Например, в Solaris dmesg - это просто скрипт оболочки, показывающий последние 200 строк /var/adm/messages.*файлов.

jlliagre
источник
1
Это тоже красочно?
Привет, Ангел,
@ Привет-Ангел Нет пост-обработки файла журнала, поэтому нет окраски, просто cat ... | tail -200.
Jlliagre
6
  • Мы можем сказать, что dmesgэто подмножество /var/log/messagesи поддерживается в кольцевом буфере.
  • /var/log/messagesвключает в себя все системные сообщения, в том числе от запуска системы вместе с сообщениями в dmesg. В двух словах dmesgсбрасываются логи от /var/log/messages.
  • /var/log/messagesвести общие журналы активности системы и dmesgподдерживает только журналы ядра.
Бхагеш Дудхедия
источник
2

dmesg : dmesg - это сообщение (дисплей или драйвер). Он используется для проверки или управления кольцевым буфером ядра.

messages : содержит глобальные системные сообщения, включая сообщения, которые регистрируются во время запуска системы. В систему вошли несколько вещей, /var/log/messagesвключая mail, cron, daemon, kern, auth и т. Д.

Mughil
источник