systemctl daemon-reexec vs. daemon-reload – Unterschiede und richtige Anwendung

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-reload ist das Standardwerkzeug für fast alle Änderungen an systemd-Units
    • daemon-reexec ist ein Spezialwerkzeug für seltene Fälle
    • Viele Anleitungen verwenden daemon-reexec unnö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.

    Schreibe einen Kommentar


    PHPCo.de
    Datenschutz-Übersicht

    Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst, und hilft unserem Team zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.