Visualizzare data e orario del comando dmesg in formato human readable

dmesg – print or control the kernel ring buffer

Spesso capita di dover analizzare l’output del dmesg e magari confrontare gli orari con altri log file. Il problema e’ che dmesg visualizza data e ora in formato timestamp . Come fare a far visualizzare a dmesg un orario “umano” ?

Fortunatamente non serve “lottare” con variabili d’ambiente o fare calcoli matematici, basta usare:

# dmesg -T

Sfortunatamente questo funziona solo sulle nuove versioni di dmesg presenti su Ububtu dalla 12.10 in poi e su Fedora 19 : niente da fare su Red Hat 6 purtroppo..

Fedora 19, che installa il pacchetto util-linux 2.23.2, permette di fare ancora meglio abilitando i colori e paginando l’output semplicemente digitando:

# dmesg -H

Se la vostra versione di dmesg non dovesse supportare le opzioni -T o -H, non vi rimane che usare il seguente script:

# dmesg | awk -F ] '{"cat /proc/uptime | cut -d \" \" -f 1" | getline st;a=substr( $1,2, length($1) - 1);print strftime("%F %H:%M:%S %Z",systime()-st+a)" -> "$0}' | more