如何获得系统以纪元格式启动的时间?

Red*_*ket 3 linux bash shell-script uptime

我需要编写一个脚本来确定在安装 RPM 后是否发生了重新启动。很容易获得 RPM 安装时的纪元时间:rpm -q --queryformat "%{INSTALLTIME}\n" glibc | head -1,它产生如下所示的输出:1423807455

此交叉检查与rpm -q --info.

# date -d@`rpm -q --queryformat "%{INSTALLTIME}\n" glibc | head -1`
Fri Feb 13 01:04:15 EST 2015
# sudo rpm -q --info glibc | grep "Install Date" | head -1
Install Date: Fri 13 Feb 2015 01:04:15 AM EST      Build Host: x86-022.build.eng.bos.redhat.com
Run Code Online (Sandbox Code Playgroud)

但是我很难弄清楚如何uptimecat /proc/uptime. 我不明白,从输出cat /proc/uptime这在我的系统是这样的:19496864.99 18606757.86。为什么有两个值?我应该使用哪个,为什么这些数字中有小数?

更新:感谢techraf

这是我将使用的脚本...

#!/bin/sh

now=`date +'%s'`
rpm_install_date_epoch=`rpm -q --queryformat "%{INSTALLTIME}\n" glibc | head -1`
installed_seconds_ago=`expr $now - $rpm_install_date_epoch`
uptime_epoch=`cat /proc/uptime | cut -f1 -d'.'`

if [ $installed_seconds_ago -gt $uptime_epoch ]
then
        echo "no need to reboot"
else
        echo "need to reboot"
fi
Run Code Online (Sandbox Code Playgroud)

我很感激对脚本的任何反馈。

谢谢

tec*_*raf 6

正如 手册(甚至维基百科)指出的那样:

/proc/uptime

显示系统自上次重新启动以来已经运行了多长时间。

第一个数字是系统启动的总秒数。第二个数字是机器空闲的时间,以秒为单位。在多核系统(和一些 linux 版本)上,第二个数字是每个 CPU 累积的空闲时间的总和。

小数点将秒与几分之一秒分开。要使用此指标计算系统启动的时间点,您必须从当前时间中减去系统已启动的秒数(第一个数字),以纪元格式四舍五入。