
Ich habe einen Cronjob laufen, der nach Server-Updates sucht, diese nacheinander installiert und dann prüft, ob ein Neustart erforderlich ist. Wenn ein Neustart erforderlich ist, führt das Skript reboot
den Server aus.
Die Hardwareuhr wird beim Booten verwendet. Es dauert eine Minute, bevor die Systemuhr verwendet wird.
Vor der Umstellung auf die Systemuhr zeigen die Protokolle, dass der Server etwa eine Stunde zurückliegt. Wenn der Server von der Hardware- auf die Systemuhr umschaltet, springen die Protokolle etwa eine Stunde nach vorne, wodurch der Cron-Daemon ausgelöst wird. Dieser bemerkt, dass die Zeit für das Server-Update-Skript bereits abgelaufen ist, und führt es erneut aus.
Dies löst eine Neustartschleife aus, da das Skript nur einmal pro Woche ausgeführt werden sollte.
Durch das Ausführen hwclock --systohc
wird die Systemuhr mit der Hardwareuhr synchronisiert, dies ist jedoch nicht dauerhaft. Nach einem Neustart ist der Zeitunterschied wieder aufgehoben.
Meine Frage ist
Wie synchronisiere ich die Systemuhr dauerhaft mit der Hardwareuhr?
Ausgabe von 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 Version 7.5.1804 (Core)
- Dies ist ein VPS-Server.
- Europa/Amsterdam
Antwort1
Entsprechend deinem timedatectl status
:
- Ihre Hardware-Uhr (RTC) ist auf UTC-Zeit eingestellt (
RTC time
), - Ihr System ist so eingestellt, dass Ihre Hardware-Uhr als lokale Zeit ausgewertet wird (
RTC in local TZ
).
Dies hat zur Folge, dass Ihre Systemuhr beim Booten eine Stunde nachgestellt wird (Ihre Zeitzone ohne Sommerzeit).
Aus man hwclock
:
POSIX-Systeme wie Linux sind so konzipiert, dass die Systemuhr im UTC-Zeitrahmen arbeitet.
Sie können das Problem ganz einfach beheben, indem Sie Folgendes ausführen:
timedatectl --adjust-system-clock set-local-rtc 0
Die Wurzel allen Übels ist, dass RTC sich nicht an die eingestellte TZ erinnert. Beachten Sie, dass diese RTC time
Zeile keine TZ-Angabe hat. Wenn Sie die Zeit in einem Hardwareteil und die TZ in einer Datei speichern ( /etc/adjtime
wie@herr.spuraticWie bereits erwähnt, kann die Synchronisierung zwischen den beiden Informationen leicht verloren gehen.
Der Vollständigkeit halber sei erwähnt, dass meiner Meinung nach die einzige Situation, in der die Hardware-Uhr auf lokal eingestellt bleiben sollte, ein Dual-Boot-Rechner mitWindows.