J'ai (par exemple) cette entrée de journal dans la sortie dmesg
:
[600711.395348] do_trap: 6 callbacks suppressed
Y a-t-il une possibilité de convertir ce temps "dmesg" en temps "réel" pour savoir quand cet événement s'est produit?
Il semble qu'il 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
.
Edit. Comme autre extension de la réponse d'Ignacio, ici sont quelques scripts pour améliorer la sortie dmesg sur les anciens systèmes.
(Remarque: pour la version python du code affiché ici, on voudra remplacer <
et >
retour à <>
pour le rendre à nouveau utilisable. )
Enfin, pour une seule valeur comme 600711.395348
on pourrait 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 deuxième chiffre ne sera probablement pas précis.).
Edit (2) : Veuillez noter que - selon le 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 vaut mieux regarder syslog
configs à /etc/*syslog*
et vérifiez les fichiers appropriés. Voir aussi: dmesg vs/var/messages . )
Pour étendre la réponse d'Ignacio, les entrées contenues dans dmesg
sont généralement également enregistrées ailleurs sur le système, via syslog, ce qui vous donnera un "vrai" horodatage. À moins qu'Ubuntu n'ait modifié la valeur par défaut définie par Debian, les entrées du journal doivent être dans /var/log/kern.log
.
Le temps donné en dmesg est en secondes depuis le démarrage du noyau. Donc, ajoutez juste autant de secondes au moment où le noyau a commencé à fonctionner (indice: uptime).
Je sais que c'est maintenant vieux mais dmesg a maintenant une option intégrée -e ou --reatime pour afficher l'heure dans 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
Sur busybox, le 3 liner ci-dessus ne fonctionnait pas, voici donc ma façon de le calculer un seul (remplacez 1628880.0
avec votre horodatage dmesg
):
Perl -e '@a=split(`/proc/uptime`);print scalar(localtime(time()+$a[0] - 1628880.0)."\n");'
dmesg | Perl -pe 'use Unix::Uptime; s/^\[(.*)\]/localtime(time()-Unix::Uptime->uptime()+$1)/e'