稼働時間とwho -bは、Linuxでシステムが最後に起動された時刻を異なる方法で表示します。

稼働時間とwho -bは、Linuxでシステムが最後に起動された時刻を異なる方法で表示します。

システムが最後に起動した2つの時間を示すLinuxシステムがあります。

root@linux:~ # who -b; uptime
          system boot  2009-07-09 20:51 
11:48am  up 1 day  0:54,  1 user,  load average: 0.01, 0.03, 0.00

誰が/var/log/wtmpの内容と稼働時間を表示しているのかを推測します。

この違いを解決する方法はありますか?昨日、システムを再起動して表示される稼働時間が正しいことを確認しました。

答え1

[ここでいくつかの誤解を見つけましたが、この記事がついに解決されると思います]

/var/run/utmpどちらもレコードを保存するための独自の形式のファイルを参照しているため、違いはありません。違いがある場合は、utmpファイルが破損しています。稼働時間は、システムが始動してから経過した時間、またはシステムが稼働していた期間を示します。システムクロックやシステム起動時間は通知されません。。システム起動時間情報はファイルに保存されます/var/run/wtmp

[centos@centos temp]$ date; uptime; who -b
Fri Dec  9 20:41:40 IST 2011
 20:41:40 up  1:32,  2 users,  load average: 0.50, 0.37, 0.29
         system boot  2011-12-09 19:11

uptimeはまた、本質的にカーネルにカウンタを保持する/ proc / uptimeを表します。

[centos@centos temp]$ sleep 1; cat /proc/uptime; uptime; sleep 5; cat /proc/uptime ; uptime
5914.79 5271.83
 20:47:39 up  1:38,  2 users,  load average: 0.29, 0.31, 0.27
5920.07 5276.80
 20:47:44 up  1:38,  2 users,  load average: 0.56, 0.36, 0.29

/var/run/wtmplast/lastb コマンドによって参照されます。who&w参考/var/run/utmp資料。last rebootログファイルが生成された後、すべての再起動のログが表示されます。

また、/procファイルシステムがある場合は、このようなツールを使用してprocinfo起動時間を取得できます。

例:

bash$ procinfo | grep Bootup
Bootup: Wed Mar 21 15:15:50 2001 Load average: 0.04 0.21 0.34 3/47 6829

答え2

BIOSクロックが同期されていないときにこれが起こるのを見ました。以下を実行してこれを確認できます。

$ hwclock --show                  
Tue 30 Aug 2011 12:48:52 PM PDT  -1.000516 seconds

このオプションがオフの場合は、同期的にバックアップする必要があります(--setオプションを使用)。これが頻繁に発生する場合は、マザーボードのCR2032を交換する必要があるかもしれません。http://www.hardwaresecrets.com/article/81

関連情報