「hwclock -u」がUTC時間を表示しないのはなぜですか?

「hwclock -u」がUTC時間を表示しないのはなぜですか?
               Local time: Sat 2022-01-29 23:18:39 CET
           Universal time: Sat 2022-01-29 22:18:39 UTC
                 RTC time: Sat 2022-01-29 22:18:39
                Time zone: Europe/Paris (CET, +0100)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

[root@rhcsa1 ~]# hwclock --get -u
2022-01-29 23:18:53.243325+01:00

答え1

ハードウェアの時計は時間帯を知らず、単なる時計です。したがって、UTC以外の特定のタイムゾーンに設定されている場合は、タイムゾーンを直接提供する必要があります。

-u、オプションはUTC時間を表示するように--utc指示しません。はい、時計がhwclockUTC として処理されることを指定するオプションです-l--localtime

hwclockこれにより、時計に保存された時間がUTCであることがハードウェアに通知され、正しい現地時間を計算して表示できます。

UTC時間を表示するには、hwclock次のように実装できます。

# TZ=UTC date
Sat Jan 29 22:52:47 UTC 2022
# TZ=UTC hwclock --get --utc
2022-01-29 23:52:50.968087+00:00

私の場合、ハードウェアクロックはUTCではなく現地時間に設定されているため、UTCに読み込んでも出力は一致しません。あなたの場合は一致する必要があります。私の場合、間違ったタイムゾーンが設定されていると一致しません--localtimeTZ

したがって、ハードウェアクロックがUTCに設定されていないと、hwclockUTC時刻を印刷できません。


マニュアルページでもこれについて説明します。

-r、--display; --get は
ハードウェアクロックを読み取り、その時間を ISO 8601 形式で標準出力に出力します。ハードウェアクロックをUTCに設定しても、表示される時間は常に現地時間です。

関連情報