Risposte:
Sembra che sia stato implementato di recente per Quantal (12.10): vedi http://brainstorm.ubuntu.com/idea/17829/ .
Fondamentalmente, dmesg
è segnalato per avere un nuovo switch -T, --ctime
.
Modificare. Come ulteriore estensione della risposta di Ignacio, ecco alcuni script per migliorare l'output di dmesg su sistemi più vecchi.
(Nota: per la versione Python del codice mostrato lì, si vorrà sostituire <
e >
tornare <>
a renderlo nuovamente utilizzabile.)
Infine, per un singolo valore come 600711.395348
si potrebbe fare
ut=`cut -d' ' -f1 </proc/uptime`
ts=`date +%s`
date -d"70-1-1 + $ts sec - $ut sec + 600711.395348 sec" +"%F %T"
e ottieni la data e l'ora dell'evento.
(Si noti che a causa di errori di arrotondamento l'ultima seconda cifra probabilmente non sarà accurata.).
Modifica (2) : Notare che - come indicato nel commento di Womble di seguito - funzionerà solo se la macchina non è stata ibernata, ecc. (In tal caso, è meglio guardare le syslog
configurazioni /etc/*syslog*
e controllare i file appropriati. Vedi anche : 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
che dovrebbe essere UTC
, poiché date +%s
restituisce secondi dall'UTC. Dovrebbe quindi essere convertito nel fuso orario locale.
Per estendere la risposta di Ignacio, le voci contenute in dmesg
sono in genere registrate anche altrove nel sistema, tramite syslog, che ti darà un timestamp "reale". A meno che Ubuntu non abbia modificato l'impostazione predefinita di Debian, le voci di registro dovrebbero essere presenti /var/log/kern.log
.
Il tempo indicato in dmesg è in secondi dall'avvio del kernel. Quindi, basta aggiungere molti secondi a quando il kernel ha iniziato a funzionare (suggerimento: uptime).
Su busybox, il 3 righe sopra non ha funzionato, quindi ecco il mio modo di calcolarlo una volta (sostituirlo 1628880.0
con il dmesg
timestamp):
perl -e '@a=split(`/proc/uptime`);print scalar(localtime(time()+$a[0] - 1628880.0)."\n");'
So che questo è ormai vecchio ma dmesg ora ha un'opzione incorporata in -e o --reatime per visualizzare l'ora nell'ora locale.
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