Respuestas:
Parece que se implementó recientemente para Quantal (12.10): consulte http://brainstorm.ubuntu.com/idea/17829/ .
Básicamente, dmesg
se informa que tiene un nuevo interruptor -T, --ctime
.
Editar. Como otra extensión de la respuesta de Ignacio, aquí hay algunos scripts para mejorar la salida de dmesg en sistemas más antiguos.
(Nota: para la versión de python del código que se muestra allí, uno querrá reemplazarlo <
y >
volver <>
a hacerlo para que se pueda volver a usar).
Finalmente, para un solo valor como 600711.395348
uno podría hacer
ut=`cut -d' ' -f1 </proc/uptime`
ts=`date +%s`
date -d"70-1-1 + $ts sec - $ut sec + 600711.395348 sec" +"%F %T"
y obtener la fecha y hora del evento.
(Tenga en cuenta que debido a errores de redondeo, el último segundo dígito probablemente no será exacto).
Editar (2) : Por favor, nota que - de acuerdo con el comentario de Womble a continuación, - esto sólo funcionará si la máquina no estaba en hibernación, etc. (En ese caso, uno se verá mejor en syslog
configuraciones al /etc/*syslog*
. Y comprobar los archivos correspondientes Ver también : 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
, debería serlo UTC
, ya que date +%s
devuelve segundos desde UTC. Entonces tendría que convertirse a la zona horaria local.
Para ampliar la respuesta de Ignacio, las entradas contenidas dmesg
también se registran en otras partes del sistema, a través de syslog, que le dará una marca de tiempo "real". A menos que Ubuntu haya cambiado el valor predeterminado establecido por Debian, las entradas de registro deben estar en /var/log/kern.log
.
El tiempo dado en dmesg es en segundos desde el inicio del kernel. Por lo tanto, solo agregue esos segundos a cuando el núcleo comenzó a ejecutarse (pista: tiempo de actividad).
En busybox, el revestimiento de 3 arriba no funcionó, así que esta es mi manera de calcularlo una vez (reemplazar 1628880.0
con su dmesg
marca de tiempo):
perl -e '@a=split(`/proc/uptime`);print scalar(localtime(time()+$a[0] - 1628880.0)."\n");'
Sé que esto ahora es antiguo, pero dmesg ahora tiene una opción incorporada -e o --reatime para mostrar la hora en la hora local.
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