Frage Müssen systemd unit-Dateien neu geladen werden, wenn sie geändert werden?


Sagen wir, ich schreibe ein mine.service Datei. Dann benutze ich systemctl enable mine.service.

Wenn ich mich später dazu entscheide zu editieren mine.serviceMuss ich es erzählen? systemd Das mine.service wurde verändert? Wenn ja, wie mache ich das?


94
2018-06-23 03:17


Ursprung




Antworten:


Nachdem Sie Änderungen an Ihrer Unit-Datei vorgenommen haben, sollten Sie ausführen systemctl daemon-reload, wie beschrieben Hier.

Daemon-Reload
  Laden Sie die Systemd Manager Konfiguration neu. Dies wird alle Generatoren erneut ausführen (siehe systemd.generator (7)), laden Sie alle Unit-Dateien neu und erstellen Sie die gesamte Abhängigkeitsstruktur neu. Während der Daemon neu geladen wird, bleiben alle Sockets, die systemd im Namen der Benutzerkonfiguration überwacht, zugänglich.

Sie können dann Ihren Dienst nach Belieben neu starten (oder neu laden)

systemctl restart your-service-name

(daemon-reload lädt die Dienste nicht neu / startet sie neu, sondern macht systemd nur auf die neue Konfiguration aufmerksam)


113
2018-06-23 11:38



Ich fand, dass ich auch eine laufen musste systemctl restart um den Dienst selbst neu zu starten ... - hwjp
Nur für den Fall, daemon-reload ist nicht universal, muss laufen systemctl --user daemon-reload für Benutzerdienste. - Olegs Jeremejevs


Als Ergänzung zu der obigen Antwort: Falls Sie etwas in der [Install] Anweisung, müssen Sie möglicherweise ausführen sudo systemctl reenable YOURUNITFILE um die Symlinks in den .target-Verzeichnissen neu zu erstellen.


1
2017-08-19 13:01



Das hat den Trick für mich gemacht! Habe es nicht verstanden, warum Systemctl die Servicedatei nicht neu geladen hat. - antonagestam