El comando dmesg de Busybox no tiene la opción -T
para convertir y mostrar los timestamps, así que intenté hacer una conversión en una sola línea.
Una línea
uptime=$(cut -d. -f1 /proc/uptime); dmesg | while read line; do time=$(echo $line | sed -e 's/^\[ *\([0-9]*\).*$/\1/g'); echo "[$(date -d @$(($(date +%s) - $uptime + $time)))] $(echo $line | cut -d ] -f 2 -)" ; done
Explicación general
- En /proc/uptime se registra el tiempo transcurrido en segundos desde que el sistema se inició.
- El timestamp que produce dmesg es el tiempo transcurrido desde que el sistema se inició.
- Al restar el tiempo transcurrido desde que el sistema se inició del tiempo actual, se obtiene el momento en que se inició el sistema.
Hora actual - (segundos acumulados de funcionamiento - timestamp de dmesg) = Hora del registro