Да, все это связано с регистрацией. Нет, это никак не связано с уровнем запуска или "защитным кольцом".
Ядро хранит свои журналы в кольцевом буфере. Основная причина этого заключается в том, что журналы запуска системы сохраняются до тех пор, пока демон syslog не получит возможность запустить и собрать их. В противном случае не было бы записи каких-либо журналов до запуска демона syslog. Содержимое этого кольцевого буфера может быть просмотрено в любое время с помощью dmesg
команды, и его содержимое также сохраняется в тот /var/log/dmesg
момент, когда запускается демон syslog.
Все журналы, которые не приходят из ядра, отправляются по мере их создания в демон syslog, поэтому они не сохраняются ни в каких буферах. Журналы ядра также извлекаются демоном syslog по мере их генерации, но они также продолжают сохраняться (без необходимости, возможно) в кольцевой буфер.
Уровни журналов можно увидеть в документации на странице syslog (3) :
- LOG_EMERG : система не работает
- LOG_ALERT : действие должно быть предпринято немедленно
- LOG_CRIT : критические условия
- LOG_ERR : условия ошибки
- LOG_WARNING : условия предупреждения
- LOG_NOTICE : нормальное, но существенное условие
- LOG_INFO : информационное сообщение
- LOG_DEBUG : сообщение уровня отладки
Каждый уровень разработан так, чтобы быть менее «важным», чем предыдущий. Файл журнала, в котором записываются журналы на одном уровне, также будет записывать журналы на всех более важных уровнях.
Разница между /var/log/kern.log
и/var/log/mail.log
(например) связана не с уровнем, а с объектом или категорией. Категории также описаны на странице руководства.
/var/log/kern.log
и/var/log/dmesg
должен иметь тот же контент, что и сообщения ядра? Но их содержание не совпадает./var/log/kern.log
должен содержатьdmesg
контент (возможно, отформатированный по-разному) со времени загрузки. Если не прошло много времени с момента загрузки, и это содержимое было изменено.dmesg
выводятся текущие значения кольцевого буфера ядра, в нем хранятся прошлые / старые значения буфера/var/log/dmesg
. Таким образом,dmesg
вывод - это только недавнее подмножество/var/log/dmesg
контента, и они отличаются. Тогда содержание/var/log/dmesg
(не так,dmesg
как в вашем комментарии) и/var/log/kernel.log
то же самое?/var/log/dmesg
контент, скорее всего, будет ближе к концу/var/log/kern.log
. Намного позже, этого не будет, оно будет вращаться. В общем случае/var/log/kern.log
будут содержать журналы, которые старше любого данного снимка буфера кольца журнала ядра, а также журналы, которые новее снимка.Чтобы ответить хотя бы на первую часть вашего вопроса о
dmesg
:/var/log/dmesg
хранит содержимое «кольцевого буфера ядра», буфера памяти, созданного ядром при загрузке, для хранения данных журнала, которые он генерирует, как только вы пройдете фазу загрузчика.Кольцевой буфер - это особый тип буфера, который всегда имеет постоянный размер, удаляя самые старые сообщения при поступлении новых сообщений. Текст, хранящийся в кольцевом буфере ядра, - это то, что вы видите, вспыхивая на экране при первой загрузке Unix -подобная машина в режиме консоли (без заставки, Плимут). Журнал ядра хранится в буфере памяти, так что журналы загрузки должны быть где-то до тех пор, пока система не загрузится до того момента, когда
syslog
демон сможет вступить во владение.dmesg
под Linux входит в состав необходимогоutil-linux
пакета инструментов обслуживания системы, публикуемого kernel.org. Согласноdmesg(1)
справочной странице,Смотрите: http://www.computerhope.com/unix/dmesg.htm
При инициализации 'systemd' эта команда может использоваться для печати кольцевого буфера ядра:,
# journalctl --dmesg or journalctl -k
thxs для исправления @don_crisstiВыполнение команды,
dmesg | grep -i ethernet
например, проанализирует кольцевой буфер ядра для строки 'ethernet'.Я надеюсь, что это поможет, по крайней мере, с первой частью вашего запроса.
источник