позже dmesg поддерживает флаг -T, возможно, попробуйте использовать -T, если ваш dmesg его поддерживает.
ilansch
Centos 7+ поддерживаетdmesg -T
rogerdpack
Ответы:
12
dmesgчитает кольцевой буфер журнала ядра. Это не делает отметки времени. Что вы должны сделать, это настроить системный журнал, чтобы получать журналы ядра из этого буфера и отправлять их в файл (если это еще не установлено). Обратите внимание, что конфигурация syslog CentOS 5.x по умолчанию отправляет журналы ядра /var/log/messages, насколько я помню.
Если вы хотите отправить все журналы ядра (dmesg) /var/log/kern.log, используя демон syslog по умолчанию, добавьте следующую строку в/etc/syslog.conf
Спасибо за ответ. Для тех, кто смотрит, что работает CentOS 6, я нашел это/etc/rsyslog.conf
Safado
Да, с CentOS (и RHEL) 6.x они изменили демон syslog по умолчанию со старого sysklogd на rsyslog. Он также доступен в виде (поддерживаемого) пакета для RHEL / CentOS 5.x.
Кристофер Кэшелл
1
Ну, у меня есть это в моем списке вещей, чтобы выяснить, но теперь вы сэкономили мне немного прибегая к помощи
Safado
8
Существует решение «Включение меток времени для dmesg / Kernel Ring Buffer»
Вы можете добавить:
printk.time=1
в ядро cmdline.
Что касается меня, я добавил в rc.local на всех машинах с марионеткой. Это легче для меня) :
if test -f /sys/module/printk/parameters/time; then
echo 1 > /sys/module/printk/parameters/time
fi
Использование rc.local- действительно уродливое решение для этого (использование rc.local- почти всегда уродливое решение чего-либо). Лучшим решением было бы поместить printk.time = 1в /etc/sysctl.confили файл в /etc/sysctl.d/. Вот почему эти файлы существуют. Вбивание вещей в rc.localконечном итоге оставит вас с хрупким, запутанным, грязным, ненадежным стартапом.
Кристофер Кашелл
Это то, что в комментарии от @ChristopherCashell - единственный правильный ответ на этот вопрос. Обидно, это не фактический ответ.
Петр
1
Я написал этот простой сценарий. Да, это медленно. Если вы хотите что-то быстрее, вы на самом деле пишете скрипт на Perl, Python или что-то еще. Я уверен, что этот простой скрипт может дать вам представление о том, как его можно рассчитать.
Обратите внимание, что я проигнорировал долю секунд, зарегистрированную в каждой строке (после. В метке времени).
perl -n - это способ чтения стандартного ввода и чтения в переменную $ _.
Тело (не раздел BEGIN) затем запускается один раз для каждой строки.
BEGIN запускает код в {} один раз.
$ a - начало dmesg с начала эпохи (секунды)
Команда s / ... принимает значение в $ _ и заменяет часть \ s * #####. ###### временной метки версией смещения dmesg "localtime" ($ 1), добавленной к время запуска системы ($ a)
print $ a печатает dmesg с меткой времени, дружественной к локали, замененной меткой времени «секунды с момента загрузки».
perl -n способ чтения стандартного ввода и чтения в переменную $ _
Тело (не раздел BEGIN) затем запускается один раз для каждой строки.
BEGIN запускает код в {} один раз.
$ a - начало dmesg с эпохи
Команда s / ... принимает значение в $ _ и заменяет часть #####. ###### метки времени версией смещения dmesg "localtime" ($ 1), добавленной к запуску системы. время ($ а)
print $ a печатает dmesg с меткой времени, дружественной к локали, замененной меткой времени «секунды с момента загрузки».
@kasperd Вот что это означает: - perl -n - это способ чтения стандартного ввода и чтения в переменную $ _. Тело (не раздел BEGIN) затем запускается один раз для каждой строки. - BEGIN запускает код в {} один раз. $ a - начало dmesg с начала эпохи. s/...Команда принимает значение в $ _ и заменяет часть #####. ###### метки времени версией смещения dmesg «localtime» ($ 1 ) добавлено время запуска системы ($ a). - print $aпечатает dmesg с меткой времени, дружественной к локали, замененной меткой времени «секунды с момента загрузки».
dmesg -T
Ответы:
dmesg
читает кольцевой буфер журнала ядра. Это не делает отметки времени. Что вы должны сделать, это настроить системный журнал, чтобы получать журналы ядра из этого буфера и отправлять их в файл (если это еще не установлено). Обратите внимание, что конфигурация syslog CentOS 5.x по умолчанию отправляет журналы ядра/var/log/messages
, насколько я помню.Если вы хотите отправить все журналы ядра (dmesg)
/var/log/kern.log
, используя демон syslog по умолчанию, добавьте следующую строку в/etc/syslog.conf
источник
/etc/rsyslog.conf
Существует решение «Включение меток времени для dmesg / Kernel Ring Buffer»
Вы можете добавить:
в ядро cmdline.
Что касается меня, я добавил в rc.local на всех машинах с марионеткой. Это легче для меня) :
источник
rc.local
- действительно уродливое решение для этого (использованиеrc.local
- почти всегда уродливое решение чего-либо). Лучшим решением было бы поместитьprintk.time = 1
в/etc/sysctl.conf
или файл в/etc/sysctl.d/
. Вот почему эти файлы существуют. Вбивание вещей вrc.local
конечном итоге оставит вас с хрупким, запутанным, грязным, ненадежным стартапом.Я написал этот простой сценарий. Да, это медленно. Если вы хотите что-то быстрее, вы на самом деле пишете скрипт на Perl, Python или что-то еще. Я уверен, что этот простой скрипт может дать вам представление о том, как его можно рассчитать.
Обратите внимание, что я проигнорировал долю секунд, зарегистрированную в каждой строке (после. В метке времени).
Я надеюсь, что это помогает. :)
источник
Изменение скрипта в случае, если строка не начинается с "["
источник
Это обновление по предложению Плутона, удаляющее пробелы из временной метки.
источник
Небольшой скрипт на Perl, как показано ниже. Это общий способ, а я не автор.
perl -n
способ чтения стандартного ввода и чтения в переменную $ _источник
s/...
Команда принимает значение в $ _ и заменяет часть #####. ###### метки времени версией смещения dmesg «localtime» ($ 1 ) добавлено время запуска системы ($ a). -print $a
печатает dmesg с меткой времени, дружественной к локали, замененной меткой времени «секунды с момента загрузки».