Im Rahmen der Installation eines zentralen Log-Servers mit Graylog und OpenSearch stolpert man früher oder später über zwei systemd-Befehle, die auf den ersten Blick ähnlich wirken:
$ systemctl daemon-reload
$ systemctl daemon-reexec
Viele Anleitungen verwenden diese Befehle eher „nach Gefühl“ – oft ohne zu erklären, wann welcher tatsächlich notwendig ist. Dieser Beitrag beleuchtet die Unterschiede und zeigt typische Anwendungsfälle aus der Praxis.
Wann braucht man diese Befehle überhaupt?
Immer dann, wenn sich systemd-relevante Konfigurationen ändern, z. B.:
- Installation eines neuen Dienstes (z. B. OpenSearch)
- Anpassung einer bestehenden Unit-Datei
- Erstellung eigener systemd-Units
- Arbeiten mit Overrides (
systemctl edit)
Wo finden sich die systemd-Units?
- System-Units →
/etc/systemd/system/ - User-Units →
~/.config/systemd/user/
systemctl daemon-reload – der Standardfall
$ systemctl daemon-reload
Dieser Befehl sorgt dafür, dass systemd seine Konfiguration neu einliest.
Was passiert genau?
- Alle Unit-Dateien werden erneut geladen
- Änderungen werden erkannt
- neue Services werden verfügbar
Typische Anwendungsfälle
- Nach Installation von OpenSearch
- Nach manuellen Änderungen an
.service-Dateien - Nach Erstellung eigener Units
- Nach
systemctl edit
Beispiel:
$ systemctl daemon-reload
$ systemctl enable --now opensearch
Fazit
Das ist der Befehl, den man fast immer braucht.
systemctl daemon-reexec – der Spezialfall
$ systemctl daemon-reexec
Dieser Befehl geht einen Schritt weiter:
systemd startet sich selbst neu (Re-Exec), während laufende Dienste erhalten bleiben.
Was passiert im Hintergrund?
- systemd wird neu geladen (Binary wird ersetzt)
- interner Zustand wird übernommen
- alle Services laufen weiter
Typische Anwendungsfälle
- Nach einem Update von systemd selbst
- Bei Debugging oder inkonsistentem Zustand
- In sehr speziellen Low-Level-Szenarien
Wann braucht man das NICHT?
In vielen Tutorials wird daemon-reexec verwendet, obwohl:
- keine systemd-Updates stattgefunden haben
- nur neue Services installiert wurden
In diesen Fällen ist daemon-reexec unnötig
Praxisbeispiel aus dem Graylog-Setup
Bei der Installation von OpenSearch oder Graylog im Thomas-Krenn-Tutorial wird empfohlen:
$ systemctl daemon-reexec
Ausreichend wäre aber:
$ systemctl daemon-reload
$ systemctl enable --now graylog-server
Der Einsatz von daemon-reexec funktioniert zwar ebenfalls, ist aber nicht notwendig und kann verwirrend sein.
Fazit
daemon-reloadist das Standardwerkzeug für fast alle Änderungen an systemd-Unitsdaemon-reexecist ein Spezialwerkzeug für seltene Fälle- Viele Anleitungen verwenden
daemon-reexecunnötig – funktional korrekt, aber technisch unsauber
Wer gezielt zwischen beiden unterscheidet, arbeitet nicht nur sauberer, sondern versteht auch besser, was im System tatsächlich passiert.