サーバーの更新を確認し、それらを1つずつインストールしてから、再起動が必要かどうかを確認するcronjobを実行しています。再起動が必要な場合、スクリプトはサーバーをreboot
します。
ハードウェアクロックはブート時に使用されます。システムクロックが使用されるまでに1分かかります。
システムクロックに切り替える前に、ログはサーバーが1時間ほど遅れていることを示しています。サーバーがハードウェアからシステムクロックに切り替わると、ログがジャンプして1時間ほど先に進み、cronデーモンがトリガーされます。サーバー更新スクリプトの時間がすでに経過しているため、再度実行します。
これは、スクリプトが週に1回だけ実行されることを意図していたため、再起動ループをトリガーします。
hwclock --systohc
を実行すると、システムクロックがハードウェアクロックと同期しますが、永続的なものではありません。再起動後、時差は再びずれます。
私の質問は
システムクロックをハードウェアクロックと恒久的に同期させる方法を教えてください。
timedatectl status
の出力:
Local time: Tue 2018-08-28 12:05:37 CEST
Universal time: Tue 2018-08-28 10:05:37 UTC
RTC time: Tue 2018-08-28 10:05:37
Time zone: n/a (CEST, +0200)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: yes
DST active: yes
Last DST change: DST began at
Sun 2018-03-25 01:59:59 CET
Sun 2018-03-25 03:00:00 CEST
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2018-10-28 02:59:59 CEST
Sun 2018-10-28 02:00:00 CET
Warning: The system is configured to read the RTC time in the local time zone.
This mode can not be fully supported. It will create various problems
with time zone changes and daylight saving time adjustments. The RTC
time is never updated, it relies on external facilities to maintain it.
If at all possible, use RTC in UTC by calling
'timedatectl set-local-rtc 0'.
timedatectl status
によると:
RTC time
)に設定されている、RTC in local TZ
)として評価するように設定されています。その結果、起動時にシステムクロックが1時間遅れて設定されます(DSTのないタイムゾーン)。
man hwclock
から:
LinuxのようなPOSIXシステムは、システムクロックがUTCタイムスケールで動作するように設計されています。
あなたはそれを実行して簡単に修正することができます:
timedatectl --adjust-system-clock set-local-rtc 0
すべての悪の根本は、RTCは設定されているTZを覚えていないことです。RTC time
行にはTZ表示がないことに注意してください。ファイル内のTZ(/etc/adjtime
as @ mr.spuratic 記載)、2つの情報間の同期が失われるのは簡単です。
完全を期すために、IMHOがハードウェアクロックをローカルに設定しておく唯一の状況は、Windowsを備えたデュアルブートマシンです。