Відповіді:
Схоже, це було нещодавно реалізовано для Quantal (12.10): див. Http://brainstorm.ubuntu.com/idea/17829/ .
В основному, dmesg
як повідомляється, є новий перемикач -T, --ctime
.
Редагувати. Як ще одне розширення на відповідь Ігнасіо, ось кілька сценаріїв для покращення виводу dmesg для старих систем.
(Примітка. Для пітонової версії коду, показаного там, потрібно буде замінити <
і >
повернути, <>
щоб зробити його знову корисним.)
Нарешті, для одного значення, як 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
, як правило, також реєструються в іншому місці системи, через syslog, що дасть вам "реальну" мітку часу. Якщо Ubuntu не змінив налаштування Debian за замовчуванням, записи журналу повинні бути ввімкненими /var/log/kern.log
.
Час, вказаний у dmesg, становить секунди з моменту запуску ядра. Отже, просто додайте стільки секунд до того, коли ядро почало працювати (підказка: uptime).
На 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