Ответы:
Это выглядит , как если бы он был реализовано в последнее время для квантового (12.10): см http://brainstorm.ubuntu.com/idea/17829/ .
В основном dmesg
сообщается, что есть новый переключатель -T, --ctime
.
Редактировать. В качестве еще одного дополнения к ответу Игнасио, вот несколько скриптов для улучшения вывода dmesg на старых системах.
(Примечание: для показанной там версии кода на python нужно будет заменить <
и >
вернуться, <>
чтобы сделать его снова пригодным для использования.)
Наконец, для одного значения, как 600711.395348
можно сделать
ut=`cut -d' ' -f1 </proc/uptime`
ts=`date +%s`
date -d"70-1-1 + $ts sec - $ut sec + 600711.395348 sec" +"%F %T"
и получить дату и время события.
(Обратите внимание, что из-за ошибок округления последняя вторая цифра, вероятно, не будет точной.)
Редактировать (2) : Обратите внимание, что - согласно приведенному ниже комментарию Womble - это будет работать только в том случае, если машина не была переведена в спящий режим и т. Д. (В этом случае лучше посмотреть syslog
конфиги /etc/*syslog*
и проверить соответствующие файлы. См. Также : dmesg vs / var / messages .)
date -d"1970-01-01 + $(date +%s) sec - $(cut -d' ' -f1 </proc/uptime) sec + 600711.395348 sec" +"%F %T.%N %Z"
%Z
он должен быть UTC
, поскольку date +%s
возвращает секунды с UTC. Затем он должен быть преобразован в местный часовой пояс.
Чтобы расширить ответ Игнасио, записи, содержащиеся в нем dmesg
, также обычно регистрируются в другом месте системы через системный журнал, который даст вам «реальную» временную метку. Если Ubuntu не изменил установленный по умолчанию Debian, записи журнала должны быть в /var/log/kern.log
.
Время, указанное в dmesg, указывается в секундах с момента запуска ядра. Итак, просто добавьте столько секунд к моменту запуска ядра (подсказка: время безотказной работы).
На busybox 3 лайнера выше не работали, так что вот мой способ рассчитать его один раз (замените 1628880.0
на вашу dmesg
временную метку):
perl -e '@a=split(`/proc/uptime`);print scalar(localtime(time()+$a[0] - 1628880.0)."\n");'
Я знаю, что он уже старый, но в dmesg теперь есть встроенная опция -e или --reatime для отображения времени по местному времени.
root@bbs:/var/log# dmesg|tail -1
[50755952.379177] Out of memory in UB 1593: OOM killed process 3183 (sbbs) score 0 vm:747204kB, rss:242764kB, swap:88224kB
root@bbs:/var/log# dmesg -e|tail -1
[Feb20 17:10] Out of memory in UB 1593: OOM killed process 3183 (sbbs) score 0 vm:747204kB, rss:242764kB, swap:88224kB