如何将uptime
输出转换为自纪元以来的秒数以与dmesg
输出进行比较?正常运行时间与内核消息时间具有相同的分辨率吗?有没有比 from 更直接获取内核时间的方法uptime
?
➜ ~ echo "hi" > /dev/kmsg
➜ ~ dmesg | tail
[ 859.214564] hi
➜ ~ uptime
10:08 up 2 days, 43 secs, 2 users, load averages: 1.69 1.64 1.54
答案1
根据您的 Unix 风格,/proc
文件系统可能在某个位置有一个包含您想要的信息的正常运行时间文件。
Linux> cat /proc/uptime
5899847.37 23165596.55
uptime
以及同时命令的输出:
Linux> uptime
16:46:27 up 68 days, 6:51, 3 users, load average: 0.01, 0.02, 0.05
所以 5899847.37/86400 = 68.28527 --> 68 天 6 小时 51 分钟。
答案2
内核时间自 1970 年 1 月 1 日起以秒形式存储。您是否希望将其视为一个值?或者您想查看内核认为的实际日期/时间是什么?
对于后者,您可以只使用date -u
.
如果你想要自 1970 年 1 月 1 日(纪元)以来的当前秒数,并且已经perl
安装,你可以运行perl -e 'print time()."\n";'
您还可以使用该date
命令,使用date +"%s"
它会返回相同的信息。
如果您想知道系统已经运行了多长时间,这uptime
是最好的工具。