Ein Dienst, der auf failed geht, benötigt keinen sofortigen Neustart. Auf einem Server löscht diese Gewohnheit manchmal die Nachricht, die den Ausfall erklärt, oder startet ein Programm mit einer immer noch ungültigen Konfiguration neu.
Beginnen Sie damit, die betroffene Einheit zu identifizieren, lesen Sie deren Status und Protokoll, und beheben Sie die Ursache. Der Neustart erfolgt danach.

Tatsächlich fehlgeschlagene Einheiten auflisten
Dieser Befehl zeigt die Dienste und Einheiten an, die systemd als fehlerhaft betrachtet:
systemctl --failed
Notieren Sie den vollständigen Namen, zum Beispiel nginx.service oder meine-anwendung.service. Eine Einheit mit dem Status exited ist nicht zwingend ausgefallen: Einige Dienste führen eine kurze Aufgabe aus und stoppen dann normal. Der Status failed zeigt an, dass ein Start, ein Steuerbefehl oder ein überwacht Prozess mit einem Fehler beendet wurde.
Um die aktiven, gestoppten Dienste und deren Status zu überprüfen, sehen Sie sich auch die Liste der Dienste mit systemctl an.
Den Status des Dienstes vor jedem Neustart lesen
Ersetzen Sie nginx durch Ihre Einheit. Die Option --no-pager druckt das Ergebnis direkt im Terminal, was verhindert, dass man in less auf einer SSH-Sitzung bleibt.
sudo systemctl status nginx --no-pager
Achten Sie besonders auf die Zeile Active:, den Rückgabecode und die letzten angezeigten Zeilen. Ein bereits belegter Port, ein fehlender Pfad, ein unlesbarer Zertifikat oder eine falsch geschriebene Anweisung erscheinen oft hier. Wenn der Dienst eine Binärdatei startet, die ihren eigenen Validator hat, führen Sie zuerst diesen Validator aus. Für Nginx beispielsweise:
sudo nginx -t
Führen Sie diesen Befehl nicht auf einer Maschine aus, die Nginx nicht verwendet. Jeder Dienst hat seine eigene Syntax zur Überprüfung.
Zur Fehlermeldung mit journalctl zurückkehren
systemctl status zeigt nur einen Ausschnitt. Das Protokoll der Einheit bietet den vollständigen Kontext:
sudo journalctl -u nginx -b --no-pager
sudo journalctl -u nginx -n 50 --no-pager
-b schränkt die Suche auf den aktuellen Start ein. -n 50 behält die letzten 50 Zeilen, wenn der Fehler älter ist. Um einen Neustart in Echtzeit zu verfolgen, verwenden Sie sudo journalctl -fu nginx in einer zweiten SSH-Sitzung. Der Leitfaden journalctl und die Nachrichten des letzten Starts hilft, die Diagnose zu erweitern, wenn der Fehler mehrere Dienste betrifft.
Beheben, neu starten und dann überprüfen
Nach einer Änderung der Einheitendatei oder eines systemd-Drop-ins laden Sie die Konfiguration neu. Dieser Schritt startet den Dienst nicht neu.
sudo systemctl daemon-reload
sudo systemctl restart nginx
systemctl is-active nginx
systemctl --failed
is-active sollte active zurückgeben. Wenn der Dienst auf einem Port lauscht, überprüfen Sie auch den Port und testen Sie vom richtigen Client aus. Eine Antwort active garantiert nicht, dass eine Webanwendung, ein Proxy oder eine Datenbank bereits Anfragen akzeptiert.
Bei einem kritischen Dienst halten Sie eine zweite SSH-Sitzung vor einem Neustart offen und kopieren Sie den genauen Fehler in Ihr Ticket oder Ihre Notizen. So vermeiden Sie, dass Sie beim nächsten Vorfall dieselbe Diagnose wiederholen müssen.