Réponses:
Il semble que cela ait été implémenté récemment pour Quantal (12.10): voir http://brainstorm.ubuntu.com/idea/17829/ .
Fondamentalement, dmesg
aurait un nouveau commutateur -T, --ctime
.
Modifier. Comme autre extension de la réponse d'Ignacio, voici quelques scripts pour améliorer la sortie de dmesg sur des systèmes plus anciens.
(Remarque: pour la version python du code affiché ici, on voudra remplacer <
et >
revenir à <>
pour le rendre à nouveau utilisable.)
Enfin, pour une valeur unique comme 600711.395348
on pourrait le faire
ut=`cut -d' ' -f1 </proc/uptime`
ts=`date +%s`
date -d"70-1-1 + $ts sec - $ut sec + 600711.395348 sec" +"%F %T"
et obtenez la date et l'heure de l'événement.
(Veuillez noter qu'en raison d'erreurs d'arrondi, le dernier chiffre de la seconde seconde ne sera probablement pas précis.).
Edit (2) : Veuillez noter que - conformément au commentaire de Womble ci-dessous, - cela ne fonctionnera que si la machine n'a pas été mise en veille prolongée, etc. (Dans ce cas, il est préférable de regarder la syslog
configuration /etc/*syslog*
et de vérifier les fichiers appropriés. Voir aussi : 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
, il devrait l'être UTC
, car date +%s
renvoie les secondes depuis l'heure UTC. Il devrait alors être converti au fuseau horaire local.
Pour prolonger la réponse de Ignacio, les entrées contenues dans dmesg
sont généralement également consignées ailleurs sur le système, via syslog, ce qui vous donnera un "vrai" horodatage. À moins que Ubuntu n’ait modifié la valeur par défaut de l’ensemble Debian, les entrées du journal doivent être insérées /var/log/kern.log
.
Le temps indiqué dans dmesg est en secondes depuis le démarrage du noyau. Donc, ajoutez simplement autant de secondes à la mise en marche du noyau (indice: temps de disponibilité).
Sur busybox, les 3 lignes ci-dessus ne fonctionnent pas, donc voici comment je peux les calculer un par un (remplacez-les 1628880.0
par votre dmesg
horodatage):
perl -e '@a=split(`/proc/uptime`);print scalar(localtime(time()+$a[0] - 1628880.0)."\n");'
Je sais que cela est maintenant vieux, mais dmesg a maintenant une option intégrée dans -e ou --reatime pour afficher l’heure 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