Einführung
Eine genaue Zeitmessung ist zu einer entscheidenden Komponente moderner Softwarebereitstellungen geworden. Unabhängig davon, ob sichergestellt wird, dass die Protokolle in der richtigen Reihenfolge aufgezeichnet werden oder die Datenbankaktualisierungen korrekt angewendet werden, kann eine nicht synchronisierte Zeit zu Fehlern, Datenbeschädigungen und anderen schwerwiegenden Problemen beim Debuggen führen.
Debian 9 verfügt über eine eingebaute und standardmäßig aktivierte Zeitsynchronisation unter Verwendung des Standard-Zeitservers ntpd, der im Paket + ntp +
enthalten ist. In diesem Artikel werden einige grundlegende zeitbezogene Befehle behandelt, überprüft, ob ntpd aktiv und mit Peers verbunden ist, und wie der alternative Netzwerkzeitdienst systemd-timesyncd aktiviert wird.
Voraussetzungen
Bevor Sie mit diesem Tutorial beginnen, benötigen Sie einen Debian 9-Server mit einem Benutzer ohne Rootberechtigung, der sudo-fähig ist (siehe https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-). 9 [dieses Debian 9 Server Setup Tutorial].
Grundlegende Zeitbefehle navigieren
Der grundlegendste Befehl zum Ermitteln der Uhrzeit auf Ihrem Server lautet "+ Datum +". Jeder Benutzer kann diesen Befehl eingeben, um Datum und Uhrzeit auszudrucken:
date
OutputTue Sep 4 17:51:49 2018
Am häufigsten verwendet Ihr Server standardmäßig die UTC-Zeitzone, wie in der obigen Ausgabe hervorgehoben. UTC ist die koordinierte Weltzeit, die Zeit bei null Grad Länge. Durch die konsequente Verwendung der Weltzeit können Sie Verwirrung stiften, wenn sich Ihre Infrastruktur über mehrere Zeitzonen erstreckt.
Wenn Sie andere Anforderungen haben und die Zeitzone ändern müssen, können Sie den Befehl + timedatectl
verwenden.
Listen Sie zunächst die verfügbaren Zeitzonen auf:
timedatectl list-timezones
Eine Liste der Zeitzonen wird auf Ihrem Bildschirm gedruckt. Sie können + LEERTASTE
drücken, um nach unten zu blättern, und` + b + `, um nach oben zu blättern. Wenn Sie die richtige Zeitzone gefunden haben, notieren Sie sich diese und geben Sie "+ q +" ein, um die Liste zu verlassen.
Stellen Sie nun die Zeitzone mit + timedatectl set-timezone +
ein und achten Sie darauf, den hervorgehobenen Teil unten durch die Zeitzone zu ersetzen, die Sie in der Liste gefunden haben. Sie müssen "+ sudo " mit " timedatectl +" verwenden, um diese Änderung vorzunehmen:
sudo timedatectl set-timezone
Sie können Ihre Änderungen überprüfen, indem Sie + date +
erneut ausführen:
date
OutputTue Sep 4 13:52:57 2018
Die Abkürzung für die Zeitzone sollte den neu gewählten Wert widerspiegeln.
Nachdem wir nun wissen, wie man die Uhr überprüft und die Zeitzonen einstellt, stellen wir sicher, dass unsere Zeit korrekt synchronisiert wird.
Überprüfen des Status von ntpd
Standardmäßig führt Debian 9 den Standard-NTPD-Server aus, um die Systemzeit mit einem Pool externer Zeitserver zu synchronisieren. Wir können überprüfen, ob es läuft mit dem Befehl "+ systemctl +":
sudo systemctl status ntp
Output● ntp.service - LSB: Start NTP daemon
Loaded: loaded (/etc/init.d/ntp; generated; vendor preset: enabled)
Active: since Tue 2018-09-04 15:07:03 EDT; 30min ago
Docs: man:systemd-sysv-generator(8)
Process: 876 ExecStart=/etc/init.d/ntp start (code=exited, status=0/SUCCESS)
Tasks: 2 (limit: 4915)
CGroup: /system.slice/ntp.service
└─904 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 105:109
. . .
Der Status "+ aktiv (aktiv) " zeigt an, dass ntpd ordnungsgemäß gestartet wurde. Um mehr Informationen über den Status von ntpd zu erhalten, können wir den Befehl ` ntpq +` verwenden:
ntpq -p
Output remote refid st t when poll reach delay offset jitter
==============================================================================
0.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
1.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
2.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
3.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
-eterna.binary.n 204.9.54.119 2 u 240 256 377 35.392 0.142 0.211
-static-96-244-9 192.168.10.254 2 u 60 256 377 10.242 1.297 2.412
+minime.fdf.net 83.157.230.212 3 u 99 256 377 24.042 0.128 0.250
*t1.time.bf1.yah 98.139.133.62 2 u 31 256 377 11.112 0.621 0.186
+x.ns.gin.ntt.ne 249.224.99.213 2 u 108 256 377 1.290 -0.073 0.132
-ord1.m-d.net 142.66.101.13 2 u 473 512 377 19.930 -1.764 0.293
+ ntpq +
ist ein Abfragetool für ntpd. Das + -p +
Flag fragt nach Informationen zu den NTP-Servern (oder p eern), mit denen ntpd verbunden ist. Ihre Ausgabe wird sich geringfügig unterscheiden, sollte jedoch die Standard-Debian-Pool-Server und einige andere auflisten. Bedenken Sie, dass es einige Minuten dauern kann, bis ntpd Verbindungen herstellt.
Wechseln zu systemd-timesyncd
Es ist möglich, die eingebaute * timesyncd * -Komponente von systemd zu verwenden, um ntpd zu ersetzen. timesyncd ist eine leichtere Alternative zu ntpd, die stärker in systemd integriert ist. Beachten Sie jedoch, dass die Ausführung als Zeitserver nicht unterstützt wird und die Techniken, mit denen die Systemzeit synchron gehalten wird, etwas weniger ausgefeilt sind. Wenn Sie komplexe verteilte Echtzeitsysteme ausführen, sollten Sie sich an ntpd halten.
Um timesyncd zu verwenden, müssen wir zuerst ntpd deinstallieren:
sudo apt purge ntp
Starten Sie dann den timesyncd-Dienst:
sudo systemctl start systemd-timesyncd
Überprüfen Sie abschließend den Status des Dienstes, um sicherzustellen, dass er ausgeführt wird:
sudo systemctl status systemd-timesyncd
Output● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/systemd-timesyncd.service.d
└─disable-with-time-daemon.conf
Active: since Tue 2018-09-04 16:14:23 EDT; 1s ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 3399 (systemd-timesyn)
Status: "Synchronized to time server 198.60.22.240:123 (0.debian.pool.ntp.org)."
Tasks: 2 (limit: 4915)
CGroup: /system.slice/systemd-timesyncd.service
└─3399 /lib/systemd/systemd-timesyncd
Wir können + timedatectl +
verwenden, um das aktuelle Zeitverständnis von systemd auszudrucken:
timedatectl
Output Local time: Tue 2018-09-04 16:15:34 EDT
Universal time: Tue 2018-09-04 20:15:34 UTC
RTC time: Tue 2018-09-04 20:15:33
Time zone: America/New_York (EDT, -0400)
RTC in local TZ: no
Hiermit werden die Ortszeit, die Weltzeit (die möglicherweise mit der Ortszeit übereinstimmt, wenn Sie nicht von der UTC-Zeitzone umgeschaltet haben) und einige Informationen zum Netzwerkzeitstatus ausgedruckt. + Network time on: yes +
bedeutet, dass timesyncd aktiviert ist und + NTP synchronisiert: yes +
zeigt an, dass die Zeit erfolgreich synchronisiert wurde.
Fazit
In diesem Artikel wird gezeigt, wie Sie die Systemzeit anzeigen, Zeitzonen ändern, mit ntpd arbeiten und zum Zeitsynchronisierungsdienst von systemd wechseln. Wenn Sie anspruchsvollere Anforderungen an die Zeitmessung haben als hier beschrieben, lesen Sie möglicherweise die offizielle NTP-Dokumentation Besuchen Sie the NTP Pool Project, eine globale Gruppe von Freiwilligen, die einen Großteil der weltweiten NTP-Infrastruktur bereitstellen.