In einem Linux-System spielen Dienste (auch Daemons genannt) eine kritische Rolle bei der Bewältigung verschiedener Aufgaben wie Webhosting, Datenbankverwaltung und Netzwerkkommunikation. Jedoch können Dienste manchmal aufgrund von Fehlern, hoher Ressourcennutzung oder unerwarteten Systemausfällen abstürzen oder stoppen.
Um Ausfallzeiten zu vermeiden und einen reibungslosen Betrieb sicherzustellen, können Systemadministratoren Dienste so konfigurieren, dass sie automatisch neu starten, wenn sie ausfallen, was besonders nützlich ist für Webserver (Apache, Nginx), Datenbanken (MySQL, PostgreSQL) oder andere kritische Anwendungen, die jederzeit verfügbar sein müssen.
In diesem Leitfaden erklären wir, wie man systemd verwendet, um einen Linux-Dienst so zu konfigurieren, dass er automatisch neu startet, wenn er stoppt.
Warum einen Dienst automatisch neu starten?
Es gibt mehrere Gründe, warum man einen Dienst in Linux automatisch neu starten möchte:
- Ausfallzeiten minimieren: Wenn ein Dienst unerwartet stoppt, stellen automatische Neustarts sicher, dass Benutzer nur minimale Unterbrechungen erleben.
- Zuverlässigkeit verbessern: Dienste wie Webserver, Datenbanken und Hintergrundprozesse sollten immer laufen.
- Manuelle Arbeit reduzieren: Ohne Automatisierung müssten Sie Dienste häufig überprüfen und manuell neu starten, wenn sie ausfallen.
- Umgang mit unerwarteten Ausfällen: Wenn ein Dienst aufgrund von Softwarefehlern, Ressourcengrenzen oder Systemfehlern abstürzt, kann systemd ihn ohne Administratorintervention neu starten.
Jetzt gehen wir die Schritte durch, um automatische Neustarts mit systemd einzurichten.
Schritt 1: Identifizieren Sie den Dienst, den Sie neu starten möchten
Bevor Sie Änderungen vornehmen, müssen Sie den genauen Namen des Dienstes kennen, den Sie konfigurieren möchten, indem Sie alle laufenden Dienste auflisten.
systemctl list-units --type=service --state=running

Wenn Sie den Dienstnamen bereits kennen, können Sie seinen Status überprüfen.
systemctl status apache2

Ersetzen Sie apache2
durch den tatsächlichen Dienstnamen, den Sie verwalten möchten.
Schritt 2: Bearbeiten der Dienstkonfiguration
Systemd ermöglicht es Ihnen, das Verhalten des Dienstes mithilfe von benutzerdefinierten Konfigurationsdateien zu ändern. Anstatt systemweite Einstellungen zu ändern (die bei Updates überschrieben werden können), verwenden wir systemctl edit
, um eine Überschreibungsdatei zu erstellen.
Führen Sie den folgenden Befehl aus:
systemctl edit apache2
Dies öffnet eine leere Datei in Ihrem Standard-Texteditor.
Wenn die Datei nicht leer ist, sehen Sie vorhandene Einstellungen, die Sie ändern können. Andernfalls müssen Sie die erforderliche Neustartkonfiguration hinzufügen.

Schritt 3: Fügen Sie die Systemd-Neustartkonfiguration hinzu
In dem Editor fügen Sie die folgenden Zeilen hinzu.
[Service] Restart=always RestartSec=5s
Erklärung dieser Einstellungen:
Restart=always
– Stellt sicher, dass der Dienst jedes Mal neu gestartet wird, wenn er gestoppt wird, unabhängig vom Grund.RestartSec=5s
– Sagt systemd, 5 Sekunden zu warten, bevor der Dienst neu gestartet wird, was schnelle Neustart-Schleifen im Falle wiederholter Fehler verhindern kann.
Nachdem Sie die Einstellungen hinzugefügt haben, speichern und schließen Sie die Datei.

Nachdem Sie Änderungen an einem systemd-Dienst vorgenommen haben, müssen Sie systemd neu laden und den Dienst neu starten, um sicherzustellen, dass die neue Konfiguration angewendet wird:
sudo systemctl daemon-reload sudo systemctl restart apache2
Um zu bestätigen, dass der Dienst jetzt automatisch neu gestartet wird, führen Sie aus:
sudo systemctl show apache2 | grep Restart
Wenn alles korrekt konfiguriert ist, sollten Sie sehen:
Restart=always
Schritt 4: Testen des automatischen Neustarts in Linux
Um sicherzustellen, dass die Konfiguration funktioniert, können Sie den Dienst manuell stoppen und überprüfen, ob er neu gestartet wird.
sudo systemctl stop apache2
Warten Sie 5 Sekunden und überprüfen Sie dann seinen Status.
sudo systemctl status apache2
Wenn der Dienst wieder läuft, funktioniert der automatische Neustart!
Zusätzliche Neustartoptionen
Je nach Bedarf bietet systemd verschiedene Neustartrichtlinien:
Restart=always
– Der Dienst startet immer neu, auch wenn er manuell gestoppt wurde.Restart=on-failure
– Startet nur neu, wenn der Dienst mit einem Fehler beendet wird (aber nicht, wenn er manuell gestoppt wurde).Restart=on-abnormal
– Startet den Dienst neu, wenn er aufgrund eines Signals abstürzt (wie z.B. ein Segmentation Fault).Restart=on-watchdog
– Startet den Dienst neu, wenn er beim Ausführen einen Zeitüberschreitungsfehler hat.
Sie können Restart=always
durch eine beliebige dieser Optionen je nach Bedarf ersetzen.
Wie man Service-Logs auf Probleme überprüft
Wenn ein Dienst immer wieder fehlschlägt, ist es eine gute Idee, die Protokolle mithilfe des journalctl-Befehls zu überprüfen, der die Protokolle des Dienstes der letzten 10 Minuten anzeigt.
journalctl -u apache2 --since "10 minutes ago"
Für einen Echtzeit-Protokollstream verwenden Sie:
journalctl -u apache2 -f
Zusammenfassung
Das Einrichten automatischer Neustarts für fehlerhafte Dienste gewährleistet, dass wichtige Anwendungen ohne manuelle Eingriffe weiterhin laufen. Durch die Verwendung der Neustartoptionen von systemd können Sie die Ausfallzeiten minimieren, die Systemstabilität verbessern und die Notwendigkeit manueller Fehlerbehebungen reduzieren.
Source:
https://www.tecmint.com/automatically-restart-service-linux/