linux dmesg时间戳转换成对应时间
linux dmesg时间戳转换成对应时间
1.1 获取dmesg的时间戳
[205979.184114] Memory cgroup out of memory: Kill process 7951 (mysqld) score 2016 or sacrifice child
[205979.184398] Killed process 7951 (mysqld) total-vm:5188956kB, anon-rss:1029532kB, file-rss:37424kB, shmem-rss:0kB
[205979.249230] oom_reaper: reaped process 7951 (mysqld), now anon-rss:0kB, file-rss:40kB, shmem-rss:0kB
[232549.899205] IPv6: ADDRCONF(NETDEV_UP): calib230ef3abb4: link is not ready
[232549.900328] IPv6: ADDRCONF(NETDEV_CHANGE): calib230ef3abb4: link becomes read
2.1 时间戳表示的含义dmesg
日志中的“时间”(232549.900328) 表示的是系统启动到事件发生的时间差,这个值可以转换成时间戳
//如果没有bc计算器的命令可以安装
yum -y install bc
unix_time=`echo "$(date +%s) - $(cat /proc/uptime | cut -f 1 -d' ') + 232549.900328 " | bc`
echo ${unix_time}
注:注:/proc/uptime 第一列表示的是系统开机时间,根据这个值和当前时间可以获取到 dmesg 日志中事件发生的时间
3.1 把时间戳转换为对应的可读的时间
date -d "@${unix_time}" '+%Y-%m-%d %H:%M:%S'