Dmesg mit korrektem lesbaren Timestamp

Aus Si:Wiki von Siegrist SystemLösungen - Informatik und Rezepte
Version vom 4. März 2021, 11:36 Uhr von Sigi (Diskussion | Beiträge) (Die Seite wurde neu angelegt: « Die Zeitstempel vom <code>dmesg</code> sind die Sekunden.Millisekunden seit dem letzen Boot. Für Menschen eigentlich unlesbar bis nutzlos.<br> Kommt hinzu, das…»)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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
#dmesg | perl -pe 'BEGIN{$offset=shift} s/^\[\s*(\d+)\S+/localtime($1+$offset)/e' $offset
# or use this instead to keep dmesg colors
dmesg --color=always | perl -pe 'BEGIN{$offset=shift} s/^(\x1b\[.*?m)?\[\s*(\d+)\S+/$1.localtime($2+$offset)/e' $offset