J'ai (par exemple) cette entrée de journal en dmesg
sortie:
[600711.395348] do_trap: 6 callbacks suppressed
Existe-t-il une possibilité de convertir ce temps "dmesg" en temps "réel" pour savoir quand cet événement se produira?
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'êtreUTC
, cardate +%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
.la source
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é).
la source
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 votredmesg
horodatage):la source
dmesg | perl -pe 'use Unix::Uptime; s/^\[(.*)\]/localtime(time()-Unix::Uptime->uptime()+$1)/e'
la source
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.
la source