Une mise en garde que les autres réponses ne semblent pas mentionner est que le temps qui est montré par dmesg
ne prend pas en compte le temps de sommeil/suspension. . Il existe donc des cas où la réponse habituelle consistant à utiliser dmesg -T
ne fonctionne pas, et affiche une heure complètement fausse.
Une solution de contournement pour de telles situations consiste à écrire quelque chose dans le journal du noyau à un moment connu, puis à utiliser cette entrée comme référence pour calculer les autres moments. Évidemment, cela ne fonctionnera que pour les temps postérieurs à la dernière suspension.
Ainsi, pour afficher l'heure correcte des entrées récentes sur des machines qui peuvent avoir été suspendues depuis leur dernier démarrage, utilisez quelque chose comme ceci à partir de mon site Web. autre réponse ici :
# write current time to kernel ring buffer so it appears in dmesg output
echo "timecheck: $(date +%s) = $(date +%F_%T)" | sudo tee /dev/kmsg
# use our "timecheck" entry to get the difference
# between the dmesg timestamp and real time
offset=$(dmesg | grep timecheck | tail -1 \
| perl -nle '($t1,$t2)=/^.(\d+)\S+ timecheck: (\d+)/; print $t2-$t1')
# pipe dmesg output through a Perl snippet to
# convert it's timestamp to correct readable times
dmesg | tail \
| perl -pe 'BEGIN{$offset=shift} s/^\[(\d+)\S+/localtime($1+$offset)/e' $offset