So starten Sie automatisch einen fehlgeschlagenen Dienst unter Linux neu

In aLinuxSystem,Dienstleistungen(auch genanntDaemons) spielen eine entscheidende Rolle bei der Umstellung verschiedener Aufgaben wie Webhosting, Datenbankverwaltung und Netzwerk. Dienste können jedoch manchmal aufgrund von Fehlern, hohen Ressourcenverbrauch oder unerwarteten Systemfehlern abstürzen oder anhalten.

Um Ausfallzeiten zu verhindern und reibungslose Vorgänge sicherzustellen, können Systemadministratoren Dienste so konfigurieren, dass sie bei Ausfall automatisch neu gestartet werden, was besonders für Webserver nützlich ist (für Webserver (ApacheAnwesendNginx), Datenbanken (MysqlAnwesendPostgreSQL) oder andere kritische Anwendungen, die jederzeit verfügbar sein müssen.

In diesem Handbuch erklären wir, wie man benutztSo konfigurieren Sie einen Linux -Dienst, um automatisch neu zu starten, wenn er stoppt.

Warum einen Dienst automatisch neu starten?

Es gibt mehrere Gründe, warum Sie einen Dienst in Linux automatisch neu starten möchten:

  • Ausfallzeiten minimieren: Wenn ein Dienst unerwartet aufhört, stellen automatische Neustarts sicher, dass Benutzer nur eine minimale Störung haben.
  • Verbesserung der Zuverlässigkeit: Dienste wie Webserver, Datenbanken und Hintergrundprozesse sollten immer ausgeführt werden.
  • Reduzierte Arbeit reduzieren: Ohne Automatisierung müssten Sie die Dienste häufig überprüfen und manuell neu starten, wenn sie versagen.
  • Bewältigen Sie unerwartete Fehler: Wenn ein Dienst aufgrund von Softwarefehler, Ressourcengrenzen oder Systemfehlern abstürzt, kann das Systemd ihn ohne Administratorintervention neu starten.

Gehen wir nun die Schritte durch, um automatische Neustarts mithilfe vonsystemd.

Schritt 1: Identifizieren Sie den Service, den Sie neu starten möchten

Bevor Sie Änderungen vornehmen, müssen Sie den genauen Namen des Dienstes kennen, nach dem Sie konfigurieren möchten.

systemctl list-units --type=service --state=running
Listen Sie laufende Linux -Dienste auf

Wenn Sie den Servicenamen bereits kennen, können Sie seinen Status überprüfen.

systemctl status apache2
Überprüfen Sie den laufenden Dienststatus

Ersetzenapache2mit dem tatsächlichen Servicenamen, den Sie verwalten möchten.

Schritt 2: Bearbeiten Sie die Dienstkonfiguration

SystemdErmöglicht das Änderung des Dienstverhaltens mit benutzerdefinierten Konfigurationsdateien. Anstatt systemweite Einstellungen zu ändern (die während der Aktualisierungen überschrieben werden können) werden wir verwendensystemctl editSo erstellen Sie eine Überschreibungsdatei.

Führen Sie den folgenden Befehl aus:

systemctl edit apache2

Dadurch wird eine leere Datei in Ihrem geöffnet.

Wenn die Datei nicht leer ist, werden vorhandene Einstellungen angezeigt, die Sie ändern können. Andernfalls müssen Sie die erforderliche Neustartkonfiguration hinzufügen.

Öffnen Sie die systemd Service -Konfigurationsdatei

Schritt 3: Fügen Sie die Konfiguration des Systemd -Neustarts hinzu

Fügen Sie im Editor die folgenden Zeilen hinzu.

[Service]
Restart=always
RestartSec=5s

Erläuterung dieser Einstellungen:

  • Restart=always- stellt sicher, dass der Service unabhängig vom Grund neu startet, wenn er aufhört.
  • RestartSec=5s- fordert Systemd an, 5 Sekunden vor dem Neustart des Dienstes zu warten, was bei wiederholten Ausfällen einen schnellen Neustart -Schleifen verhindern kann.

SAMMER ABSETZT, speichern und schließen Sie die Datei.

Service -Neustartkonfiguration hinzufügen

Nachdem Sie Änderungen an einem SystemD -Dienst vorgenommen haben, müssen Sie den Dienst neu laden und 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, rennen Sie:

sudo systemctl show apache2 | grep Restart

Wenn alles richtig konfiguriert ist, sollten Sie sehen:

Restart=always

Schritt 4: Testen Sie den automatischen Neustart unter Linux

Um sicherzustellen, dass die Konfiguration funktioniert, können Sie den Dienst manuell stoppen und überprüfen, ob sie neu gestartet werden.

sudo systemctl stop apache2

Warten Sie 5 Sekunden und überprüfen Sie dann den Status.

sudo systemctl status apache2

Wenn der Dienst wieder ausgeführt wird, funktioniert der automatische Neustart!

Zusätzliche Neustartoptionen

Abhängig von Ihren Anforderungen bietet Systemd unterschiedliche Neustartrichtlinien:

  • Restart=always- Der Service startet immer wieder, auch wenn er manuell gestoppt wurde.
  • Restart=on-failure- Starten Sie nur dann neu, wenn der Dienst mit einem Fehler beendet ist (jedoch nicht, wenn man manuell gestoppt wird).
  • Restart=on-abnormal- Starten Sie den Dienst neu, wenn er aufgrund eines Signals abfällt (wie ein Segmentierungsfehler).
  • Restart=on-watchdog- Starten Sie den Service neu, wenn er während des Laufens ausfällt.

Sie können ersetzenRestart=alwaysmit einer dieser Optionen basierend auf Ihren Anforderungen.

So überprüfen Sie Serviceprotokolle auf Probleme

Wenn ein Dienst ständig fehlschlägt, ist es eine gute Idee, Protokolle mithilfe der zu überprüfen, die Protokolle für den Dienst aus den letzten 10 Minuten anzeigen.

journalctl -u apache2 --since "10 minutes ago"

Verwenden Sie für einen Echtzeit-Protokollstrom:

journalctl -u apache2 -f
Abschluss

Das Einrichten automatischer Neustarts für fehlgeschlagene Dienste stellt sicher, dass kritische Anwendungen ohne manuelle Intervention weiter ausgeführt werden. Durch die Nutzung der Neustartoptionen von Systemd können Sie Ausfallzeiten minimieren, die Systemstabilität verbessern und die Bedarf an manueller Fehlerbehebung verringern.