Genaue Systemzeit mit timedatectl und chronyd verwalten
In diesem Schritt lernen Sie, wie Sie die genaue Systemzeit mithilfe des Befehls timedatectl verwalten und die Rolle des Dienstes chronyd verstehen. Eine genaue Zeitmessung ist entscheidend für die Protokollierung, Sicherheit und viele Netzwerkdienste.
1. Verwenden von timedatectl zur Verwaltung der Systemzeit und Zeitzonen:
Der Befehl timedatectl bietet einen Überblick über die aktuellen zeitrelevanten Systemeinstellungen, einschließlich der lokalen Zeit, der Weltzeit (UTC), der RTC-Zeit, der Zeitzone und des NTP-Synchronisationsstatus.
Überprüfen wir die aktuellen Zeiteinstellungen Ihres Systems:
timedatectl
Sie sollten eine Ausgabe ähnlich dieser sehen (die genaue Uhrzeit und das Datum spiegeln Ihre aktuelle Systemzeit wider):
Local time: Sun 2025-06-15 21:46:11 EDT
Universal time: Mon 2025-06-16 01:46:11 UTC
RTC time: Mon 2025-06-16 01:46:10
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Sie können alle verfügbaren Zeitzonen mit der Option list-timezones auflisten:
timedatectl list-timezones | less
Drücken Sie q, um less zu beenden. Die Zeitzonen werden basierend auf der IANA (Internet Assigned Numbers Authority) Zeitzonendatenbank benannt, typischerweise nach Kontinent/Ozean und dann nach der größten Stadt.
Um die Zeitzone des Systems zu ändern, verwenden Sie die Option set-timezone. Ändern wir beispielsweise die Zeitzone in America/Phoenix. Sie benötigen dafür sudo-Rechte.
sudo timedatectl set-timezone America/Phoenix
Überprüfen Sie nun die Änderung:
timedatectl
Sie sollten sehen, dass die Zeitzone auf America/Phoenix aktualisiert wurde.
Sie können die aktuelle Systemzeit auch manuell mit der Option set-time einstellen. Das Format lautet "YYYY-MM-DD hh:mm:ss", aber Sie können das Datum oder die Uhrzeit weglassen. Stellen wir die Uhrzeit auf 09:00:00 (für das aktuelle Datum) ein.
sudo timedatectl set-time 09:00:00
Überprüfen Sie die Zeitänderung:
timedatectl
Schließlich aktiviert oder deaktiviert die Option set-ntp die NTP-Synchronisierung für die automatische Zeitanpassung. Sie nimmt true oder false als Argument. Deaktivieren wir die NTP-Synchronisierung für einen Moment (wir werden sie später wieder aktivieren).
sudo timedatectl set-ntp false
Überprüfen Sie den NTP-Dienststatus:
timedatectl
Sie sollten NTP service: inactive sehen.
2. Verstehen und Konfigurieren des Dienstes chronyd:
Der Dienst chronyd ist ein Daemon, der die Real-Time Clock (RTC) des Systems genau hält, indem er sie mit NTP (Network Time Protocol) Servern synchronisiert. Er ist der Standard-NTP-Client in Red Hat Enterprise Linux.
Die Konfigurationsdatei für chronyd ist /etc/chrony.conf. Standardmäßig verwendet er öffentliche NTP-Server. In einem realen Szenario könnten Sie ihn so konfigurieren, dass er interne NTP-Server verwendet.
Betrachten wir die Standarddatei chrony.conf.
cat /etc/chrony.conf
Sie sehen Zeilen, die mit server oder pool beginnen, die die NTP-Quellen definieren. Die Option iburst wird empfohlen, da sie schnell vier Messungen vornimmt, um eine genauere initiale Synchronisierung zu erreichen.
Der stratum einer NTP-Zeitquelle gibt ihre Qualität an. Ein stratum 0 ist eine Referenzuhr, stratum 1 ist direkt an eine Referenzuhr angeschlossen, und stratum 2 synchronisiert sich von einem stratum 1-Server.
Da systemctl in dieser Containerumgebung nicht verfügbar ist, können wir chronyd nicht direkt neu starten, um Konfigurationsänderungen anzuwenden. Wir können die Konfigurationsänderung jedoch simulieren, indem wir die Datei ändern.
Aktivieren wir die NTP-Synchronisierung mit timedatectl erneut.
sudo timedatectl set-ntp true
Überprüfen Sie den NTP-Dienststatus erneut:
timedatectl
Sie sollten NTP service: active sehen.
Der Befehl chronyc fungiert als Client für den Dienst chronyd. Sie können ihn verwenden, um den Synchronisationsstatus zu überwachen. Der Befehl chronyc sources zeigt die aktuellen Zeitquellen und ihren Synchronisationsstatus an.
chronyc sources -v
Die Ausgabe zeigt Details zu den NTP-Quellen. Das Sternchen * im Feld S (Source state) gibt die Quelle an, mit der sich chronyd derzeit synchronisiert.
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 100.100.61.88 1 5 377 16 +1824us[+2180us] +/- 85ms
...output omitted...
Diese Ausgabe bestätigt, dass Ihr System seine Zeit aktiv mit einem NTP-Server synchronisiert.