最後の再起動と-bが異なる結果を表示する人は誰ですか?

最後の再起動と-bが異なる結果を表示する人は誰ですか?

次の3つのコマンドを使用して、コンピュータが再起動された最新の時刻を確認します。

last reboot
who -b
uptime

最後の再起動の結果は次のとおりです。

wtmp begins Sat Oct  9 04:49:27 2021

who -bの結果は次のとおりです。

system boot  2018-01-11 20:52

稼働時間の結果は次のとおりです。

22:49:01 up 1372 days, ...

uptimeとwho -bの結果は一致しているようですが、最後の再起動の結果と一致しません。

この投稿を見つけました稼働時間とwho -bは、Linuxでシステムが最後に起動された時刻を異なる方法で表示します。しかし、彼の稼働時間がwho -bと一致しないと言いましたが、これは私の状況とは異なります。

答え1

Linuxでは、3つのコマンドはすべてデフォルトで異なる情報ソースを使用します。

uptimeカーネルが提供する情報を使用してください/proc/uptime。後者の2つの情報が含まれています。:停止時間やアイドル処理時間など、システムの通常の実行時間です。この値は正しいです。

who -b保存された情報の使用/var/run/utmp。現在のシステムでは、これは実際には/run/utmp現在のブートに関する情報(システムの再起動時にその内容が失われる/run情報tmpfs)であり、現在のブートについても正確です。

last rebootに保存されている情報を使用してください/var/log/wtmp。ここに保存されている情報も一般的に正確ですが、お客様の情報は必要もうそこに保存されない可能性があります。wtmp複数の設定で通常は毎月循環します。つまり、システムの現在の開始時間がwtmp最後の回転時間より前の場合に表示される情報は部分的です。特に、last reboot最終的に表示されるのは、システムの実際の開始時間ではなく、最後の回転時間です。これがlast開始時間が表示される理由ですwtmp。これは表示される情報の時間範囲ですlast

wtmp最後の起動時間が含まれると、last reboot次のように表示されます。

$ last reboot | head -n 1
reboot   system boot  5.10.0-8-amd64   Mon Sep 13 15:56   still running
$ who -b
         system boot  2021-09-13 15:56
$ uptime
 09:11:03 up 31 days, 17:15, 13 users,  load average: 0.48, 0.34, 0.42

関連情報