Busybox的dmesg命令没有转换并显示时间戳的 -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
简要说明
- /proc/uptime 文件记录了系统自启动以来经过的时间(以秒为单位)。
- dmesg 输出的时间戳是系统自启动以来经过的时间。
- 通过从当前时间减去系统自启动的经过时间,就可以求得系统启动的时间。
当前时间 - (累计运行秒数 - dmesg时间戳) = 日志时间