/proc/uptime文件中的内容

本文介绍了如何利用/proc/uptime文件解析Linux系统从启动至今的运行时间,并通过示例展示了如何结合dmesg日志中的时间戳计算出故障的绝对时间。这种方法在分析日志特别是sosreport时非常有用,可以辅助定位故障发生的具体时刻。
摘要由CSDN通过智能技术生成

/proc/uptime用户记录设备从启动后为止有多久,文件中只包括两行内容,如下例所示:

350735.47 234388.90

第一个数字表示系统启动到现在用了多少秒,第二个数字表示所有CPU内核空闲时间的合计值,单位是秒,通常在多核系统中第二个数字会比第一个整体的启动时间数字大。一般只看第一个数据就可以换算成实际时间,方法是:现在的时间换算成数字 - uptime文件中的第一个值=系统启动的时间串。然后再用date将时间转换成可读的格式。(这应该就是uptime命令的计算方法)

对于一些使用uptime时间的日志分析而言,可以先将日志收集的时间换算成数字,减去uptime文件中的第一个值,再加上日志时的相对时间数字,就是日志发生的绝对时间。

举例说明:

  • dmesg文件中有以下内容:

[21508124.058050] Out of memory: Killed process 556148 (.0S) total-vm:4871440kB, anon-rss:3368312kB, file-rss:0kB, shmem-rss:2576kB, UID:1000 pgtables:7216kB oom_score_adj:0

  • 当前时间:

2022年 05月 17日 星期二 22:35:05 CST

user@vag:~$ date +%s 
1652798285

  • uptime文件内容:

user@vag:~$ cat /proc/uptime
21508476.67 262687071.21

故障绝对时间=1652798285-21508476+21508124.058050=1652797933.058050

转换成

user@vag:~$ date -d '@1652797933.058050'
2022年 05月 17日 星期二 22:32:13 CST

如果只关注dmesg的绝对时间输出,大可不必这么麻烦,也不必关心转换方法。dmsg -T就会实现自动转换。

但是在拿到一份sosreport的时候,查看故障原因,除了放到debug系统中分析,人肉处理问题,可能就要用到上面的笨办法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值