システム起動時間をエポック形式で表示するには?

システム起動時間をエポック形式で表示するには?

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

しかし、uptimeエポック時間を取得する方法を見つけるのに問題がありますcat /proc/uptime。私のシステムでは、cat /proc/uptime次の出力を理解できません19496864.99 18606757.86。なぜ2つの値がありますか?どちらを使うべきですか?この数字にはなぜ少数がありますか?

アップデート:ありがとう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

スクリプトに関するフィードバックをいただきありがとうございます。

ありがとう

ベストアンサー1

〜のように 手動(そしてさらにウィキペディア)指摘:

/proc/uptime

最後に再起動してからシステムが実行された時刻を表示します。

最初の数字は、システムが稼働した合計時間(秒単位)です。 2番目の数字は、マシンがアイドル状態の時間(秒単位)です。マルチコアシステム(および一部のLinuxバージョン)では、2番目の数字は各CPUの累積アイドル時間の合計です。

小数点は秒を秒の小数部分と区別します。この指標を使用してシステムが稼働している時点を計算するには、現在の時間(エポック形式に丸められた)からシステムが稼働している時間(秒)(最初の数字)を減算する必要があります。

たとえば、Rubyの開始タイムスタンプ(精度は100ms、制限付き/proc/uptime):

`date +%s.%3N`.split[0].to_f - `cat /proc/uptime`.split[0].to_f

おすすめ記事