Zeit mit Chrony aus einem Systemd-Skript aktualisieren (Neustart einiger Apps)?

Zeit mit Chrony aus einem Systemd-Skript aktualisieren (Neustart einiger Apps)?

Wenn mein Hoster meine VM auf einen anderen Host verschiebt, weicht die lokale Zeit ab (bis zu 3 Sekunden). Chrony kann das beheben, aber es dauert lange, bis es das merkt. Während dieser Zeit fährt mein Datenbankknoten (CockroachDB) wegen der Zeitdifferenz herunter (max. 0,5 Sekunden erlaubt). Dann startet mein systemd-Skript ihn neu.

Jetzt möchte ich, dass das systemd-Skript zuerst die Zeit aktualisiert. Also habe ich dies zu meinem hinzugefügt /etc/systemd/system/cockroach.serviceSkript:

ExecStartPre=-/usr/bin/chronyc -a makestep

Dies führt jedoch zu dem Fehler 501 (fehlende Autorisierung), da mein Systemd-Skript als Benutzer „Cockroach“ ausgeführt wird und der Chrony-Daemon nur Nachrichten von den Benutzern „Root“ oder „Chrony“ (UDP) akzeptiert.

Jetzt stecke ich fest. Gibt es eine Möglichkeit, Chrony auch Nachrichten von Cockroach-Benutzern zu ermöglichen? Oder andere Optionen, um die Zeit jetzt zu synchronisieren (Chrony läuft, daher ist keine manuelle Aktualisierung möglich).

Antwort1

Die Lösung ist die "+" Syntax für dieExecStartPreParameter. Der folgende Befehl führt denchronikausführbar mit Root-Rechten (+) und ignoriert alle bei diesem Aufruf auftretenden Fehler (-):

ExecStartPre=-+/usr/bin/chronyc -a makestep

Das hat bei mir gut funktioniert.

Die Dokumentation zu diesen Präfixen finden Sie in der systemd-Dokumentation für denExecStartParameter hier:https://www.freedesktop.org/software/systemd/man/systemd.service.html#ExecStart=

verwandte Informationen