Welcher Dienst bietet time-sync.target in systemd?

8

Wie kann ich erkennen, welcher Dienst time-sync.target in systemd bereitstellt? Ist es konfigurierbar oder in systemd fest codiert? Wie kann ich meinen benutzerdefinierten Zeitsynchronisierungsdämon / -dienst so konfigurieren, dass dieses Ziel bereitgestellt wird?

Filip Havlíček
quelle

Antworten:

10

Lauf

systemctl show time-sync.target

um die Informationen und die Konfiguration anzuzeigen, die systemd für dieses Ziel verwaltet. Dies zeigt Ihnen insbesondere, dass es Teil der speziellen systemd-Einheiten ist und dort dokumentiert ist:

Dienste, die für die Synchronisierung der Systemuhr von einer Remote-Quelle verantwortlich sind (z. B. NTP-Client-Implementierungen), sollten dieses Ziel abrufen und sich davor bestellen. Alle Dienste, bei denen die richtige Zeit After=erforderlich ist, sollten nach dieser Einheit bestellt werden, aber nicht abgerufen werden . Systemd fügt allen SysV-Init-Skript-Serviceeinheiten mit einem LSB-Header, der sich auf die Funktion " $time" bezieht, automatisch Typabhängigkeiten für diese Zieleinheit hinzu .

Es ist vollständig konfigurierbar ( systemctl editzum Überschreiben aller gewünschten Aspekte). Wie oben erwähnt, Dienste, die Zeitsynchronisation bereitstellen ( z systemd-timesyncd.service erklären ), dass sie dieses Ziel wollen, und bestellen sich davor; Dienste, die Zeitsynchronisation benötigen, bestellen sich danach.

Kopieren Sie zum Konfigurieren eines Zeitsynchronisierungsdienstes die relevanten Teile der systemd-timesyncKonfiguration:

[Unit]
Before=time-sync.target
Wants=time-sync.target
Stephen Kitt
quelle
Services... should pull in this targetbedeutet Starting the services... should trigger the starting of this target?
TheMeaningfulEngineer
Ziemlich genau, ja; Dies bedeutet, dass Dienste ... deklariert werden sollten Wants=time-sync.target, was sich auf den Start auswirkt, time-sync.targetwenn die Konfigurationsdienste gestartet werden (ohne dass das Ziel erforderlich ist, dh die Transaktion time-sync.targetschlägt nicht fehl, wenn sie fehlschlägt).
Stephen Kitt
Und hat time-sync.targetnur eine Ordnungsabhängigkeit von systemd-timesyncd.service( systemd-timesyncd.servicebeginnt vorher time-sync.target). Wenn systemd-timesyncd.servicees kurz nach dem Start fehlschlägt, time-sync.targetist es immer noch erreicht?
TheMeaningfulEngineer
Das hängt davon ab, wann genau es fehlschlägt. Wenn es während des Startvorgangs fehlschlägt, time-sync.targetwird es nicht gestartet. Wenn es nach dem Start fehlschlägt, time-sync.targetwird auch gestartet. systemd-timesyncd.serviceist so konfiguriert, dass es bei einem Fehler ohne Verzögerung neu gestartet wird. Wenn dies fehlschlägt, wird es von systemd sofort neu gestartet.
Stephen Kitt
If it fails during startup- Was meinst du mit startuphier? Wäre ein Segfault systemd-timesyncd.serviceein fehlgeschlagener Start? (versuchen zu verstehen, was als Schwellenwert von "Starten" bis "Starten" angesehen werden würde)
TheMeaningfulEngineer