Dmesg mit korrektem lesbaren Timestamp

Aus Si:Wiki von Siegrist SystemLösungen - Informatik und Rezepte
Zur Navigation springen Zur Suche springen

Die Zeitstempel vom dmesg sind die Sekunden.Millisekunden seit dem letzen Boot. Für Menschen eigentlich unlesbar bis nutzlos.
Kommt hinzu, dass diese Zeitstempel nach einem suspend/resume nicht mehr stimmen da sie währendessen nicht gezählt werden.

Dieses Skript ( etwas angepasst von https://serverfault.com/users/63361/mivk , Danke ) konvertiert die Timestamp zu menschenlesbaren und korrekten Zeiteinträgen.


#!/bin/bash
#

# write current time to kernel ring buffer
echo "timecheck: $(date +%s) = $(date +%F_%T)" >  /dev/kmsg

# use our "timecheck" entry to get the difference
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
# for use without colors:
#-> dmesg | perl -pe 'BEGIN{$offset=shift} s/^\[\s*(\d+)\S+/localtime($1+$offset)/e' $offset
# for use to keep dmesg colors:
dmesg --color=always | perl -pe 'BEGIN{$offset=shift} s/^(\x1b\[.*?m)?\[\s*(\d+)\S+/$1.localtime($2+$offset)/e' $offset


→ Je nach System die dmesg-Zeile mit oder ohne 'color' aktivieren !