Преобразование временной метки dmesg в Busybox
Сервер
Published: 2023-02-24

Команда dmesg в Busybox не имеет параметра -T для преобразования временных меток, поэтому я подготовил одноразовую команду для этого.

Однострочная команда

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

Краткое объяснение

  1. В файле /proc/uptime записано время, прошедшее с момента загрузки системы в секундах.
  2. Временные метки, выводимые dmesg, представляют собой время, прошедшее с момента загрузки системы.
  3. Вычтя время, прошедшее с момента загрузки системы, из текущего времени, мы можем определить время загрузки системы.
Текущее время - (общее время работы в секундах - временная метка dmesg) = время записи