サーバーのアップデートを確認し、1つずつインストールしてから再起動が必要かどうかを確認するcronjobを実行しています。このスクリプトは、サーバーを再起動する必要がある場合にサーバーを起動しますreboot
。
ハードウェアクロックは起動時に使用され、システムクロックが使用されるまでに1分かかります。
システムクロックに切り替える前に、ログにはサーバーが約1時間遅れていることがわかりました。サーバーがハードウェアからシステムクロックに切り替わると、ログは1時間ほどジャンプして進行し、これによってcronデーモンがトリガーされ、次のようになりました。更新スクリプトの時間が経過したので、もう一度実行してください。
スクリプトは週に一度だけ実行されるため、再開ループがトリガーされます。
実行は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'.
- CentOS Linuxバージョン7.5.1804(コア)
- VPSサーバーです。
- ヨーロッパ/アムステルダム
答え1
あなたのコメントによるとtimedatectl status
:
- ハードウェアクロック(RTC)がUTC時間(
RTC time
)に設定されています。 - システムは、ハードウェア時計を現地時間(
RTC in local TZ
)で評価するように設定されています。
したがって、起動時にシステムクロックが1時間遅れます(標準時間帯には夏時間は適用されません)。
からman hwclock
:
LinuxなどのPOSIXシステムは、システムクロックがUTC時間単位で動作するように設計されています。
次の操作で簡単に修正できます。
timedatectl --adjust-system-clock set-local-rtc 0
すべての悪の源は、RTCが自分が設定したTZを覚えていないということです。このRTC time
行にはTZマークはありません。ハードウェアに時間を保存し、ファイルにTZを保存した場合(/etc/adjtime
例:@spuraticさん注)2 つの情報間の同期が失われやすい。
完全性のために、IMHOは、ハードウェアクロックがローカルに設定されている唯一のケースはデュアルブートシステムです。Windows。