Comprendre l' dmesg
horodatage est assez simple: c'est le temps en secondes depuis le démarrage du noyau. Ainsi, ayant le temps de démarrage ( uptime
), vous pouvez additionner les secondes et les afficher dans le format de votre choix.
Ou mieux, vous pouvez utiliser l' -T
option de ligne de commande dmesg
et analyser le format lisible par l'homme.
Depuis la page de manuel :
-T, --ctime
Print human readable timestamps. The timestamp could be inaccurate!
The time source used for the logs is not updated after system SUSPEND/RESUME.
dmesg
deutil-linux 2.20.1
sous Ubuntu 13.04)rpm -qf /bin/dmesg => util-linux-2.13-0.56.0.2.el5
util-linux 2.20
, selon les notes de publicationAvec l'aide de dr answer, j'ai écrit une solution de contournement qui permet de convertir votre fichier .bashrc. Il ne cassera rien si vous n'avez pas d'horodatage ou d'horodatage déjà correct.
Aussi, une bonne lecture sur la logique de conversion d'horodatage dmesg et comment activer les horodatages lorsqu'il n'y en a pas: https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&solutionid=sk92677
la source
local dmesg_bin=$(type -a dmesg | awk 'END { print $NF }')
type
overwhich
, consultez cette question . J'ai cependant édité ma réponse pour éviter le triple tube inutile.Pour les systèmes sans "dmesg -T" tels que RHEL / CentOS 6, j'ai aimé la fonction "dmesg_with_human_timestamps" fournie par lucas-cimon plus tôt. Il a un peu de mal avec certaines de nos boîtes avec une grande disponibilité. Il s'avère que les horodatages du noyau dans dmesg sont dérivés d'une valeur de disponibilité conservée par les processeurs individuels. Au fil du temps, cela se désynchronise avec l'horloge temps réel. En conséquence, la conversion la plus précise pour les entrées dmesg récentes sera basée sur l'horloge du processeur plutôt que sur / proc / uptime. Par exemple, sur une boîte CentOS 6.6 particulière ici:
En tenant compte du temps de fonctionnement du processeur en millisecondes, il y a un décalage de près de 5 heures et demie ici. J'ai donc révisé le script et l'ai converti en bash natif dans le processus:
la source
Donc KevZero a demandé une solution moins kludgy, alors j'ai proposé ce qui suit:
Voici un exemple:
Si vous voulez qu'il fonctionne un peu mieux, placez plutôt l'horodatage de proc dans une variable :)
la source
Dans les versions récentes de dmesg, vous pouvez simplement appeler
dmesg -T
.la source
Si vous n'avez pas l'
-T
optiondmesg
comme par exemple sur Andoid, vous pouvez utiliser labusybox
version. Ce qui suit résout également d'autres problèmes:[0.0000]
format est précédé de quelque chose qui ressemble à des informations de couleur mal placées, des préfixes comme<6>
.Il est inspiré de ce billet de blog .
Notez cependant que cette implémentation est assez lente.
la source
vous aurez besoin de référencer le "btime" dans / proc / stat, qui correspond à l'époque Unix au dernier démarrage du système. Ensuite, vous pouvez vous baser sur cette heure de démarrage du système, puis ajouter les secondes écoulées données dans dmesg pour calculer l'horodatage de chaque événement.
la source
Avec les anciennes distributions Linux, une autre option consiste à utiliser un script d'encapsulation, par exemple en Perl ou Python.
Voir les solutions ici:
http://linuxaria.com/article/how-to-make-dmesg-timestamp-human-readable?lang=en http://jmorano.moretrix.com/2012/03/dmesg-human-readable-timestamps/
la source