Das Herunterfahren Ihres Linux-Systems dauert zu lange? Hier sind die Schritte, die Sie unternehmen können, um herauszufinden, was das verzögerte Herunterfahren verursacht, und das Problem zu beheben.
Ich hoffe, Sie sind mit dem Sigterm- und Sigkill-Konzept ein wenig vertraut.
Wenn Sie Ihr Linux-System herunterfahren, sendet es das sigterm und fordert die laufenden Prozesse höflich auf, anzuhalten. Einige Prozesse verhalten sich schlecht und sie ignorieren den Sigterm und laufen weiter.
Dies kann zu einer Verzögerung des Herunterfahrvorgangs führen, da Ihr System für eine vordefinierte Zeit darauf wartet, dass die laufenden Prozesse beendet werden. Nach dieser Zeit sendet es das Kill-Signal, um das Stoppen aller verbleibenden laufenden Prozesse zu erzwingen, und fährt das System herunter. Ich empfehle, etwas über sigterm vs. sigkill zu lesen, um den Unterschied zu verstehen.
In manchen Fällen sehen Sie auf dem schwarzen Bildschirm sogar eine Meldung wie „Ein Stopp-Job wird ausgeführt“.
Wenn das Herunterfahren Ihres Systems zu lange dauert, können Sie Folgendes tun:
- Überprüfen Sie, welcher Prozess/Dienst zu lange dauert und ob Sie ihn entfernen oder neu konfigurieren können, damit er sich ordnungsgemäß verhält.
- Ändern Sie die Standardwartezeit, bevor Ihr System die laufenden Prozesse erzwingt. [Schnelle und schmutzige Lösung]
Ich verwende hier Ubuntu, das systemd verwendet. Die Befehle und Schritte hier gelten für jede Linux-Distribution, die systemd verwendet (die meisten tun dies).
Überprüfen Sie, welche Prozesse unter Linux ein langes Herunterfahren verursachen
Wenn Sie herausfinden möchten, was nicht stimmt, sollten Sie überprüfen, was beim letzten Herunterfahren passiert ist. Verwenden Sie diesen Befehl, um die Macht von „Ich weiß, was Sie letzte Sitzung getan haben“ zu erhalten (Wortspiel beabsichtigt):
journalctl -rb -1
Mit dem Befehl journalctl können Sie Systemprotokolle lesen. Mit den Optionen ‚-b -1‘ filtern Sie die Protokolle für die letzte Boot-Session. Mit der Option ‚-r‘ werden die Protokolle in umgekehrter chronologischer Reihenfolge angezeigt.
Mit anderen Worten, der Befehl „journalctl -rb -1“ zeigt die Systemprotokolle kurz vor dem letzten Herunterfahren Ihres Linux-Systems an. Das brauchen Sie, um das Problem des langen Herunterfahrens unter Linux zu analysieren.
Keine Journalprotokolle? Folgendes sollten Sie tun
Wenn es keine Journalprotokolle gibt, stellen Sie bitte sicher, dass Ihre Distribution systemd verwendet.
Auch auf manchen Linux-Distributionen mit Systemd sind die Journal-Logs standardmäßig nicht aktiviert.
Stellen Sie sicher, dass /var/log/journal existiert. Wenn dies nicht der Fall ist, erstellen Sie es:
sudo mkdir /var/log/journal
Sie sollten auch den Inhalt der Datei /etc/systemd/journald.conf überprüfen und sicherstellen, dass der Wert von Storage entweder auf auto oder persistent eingestellt ist.
Finden Sie etwas Verdächtiges in den Protokollen? Gibt es einen Prozess/Dienst, der sich weigert, anzuhalten? Wenn ja, untersuchen Sie, ob Sie es ohne Nebenwirkungen entfernen oder neu konfigurieren könnten. Entfernen Sie hier bitte nicht blind Dinge. Sie sollten den Prozess kennen.
Beschleunigen Sie das Herunterfahren unter Linux, indem Sie das standardmäßige Stopp-Timeout reduzieren [Schnelle Lösung]
Die Standardwartezeit für das Herunterfahren ist normalerweise auf 90 Sekunden eingestellt. Ihr System versucht, die Dienste nach diesem Zeitraum zu stoppen.
Wenn Sie möchten, dass Ihr Linux-System schnell heruntergefahren wird, können Sie diese Wartezeit ändern.
Sie finden alle systemd-Einstellungen in der Konfigurationsdatei unter /etc/systemd/system.conf. Diese Datei sollte mit vielen Zeilen gefüllt sein, die mit # beginnen. Sie stellen die Standardwerte der Einträge in der Datei dar.
Bevor Sie irgendetwas tun, ist es eine gute Idee, eine Kopie der Originaldatei zu erstellen.
sudo cp /etc/systemd/system.conf /etc/systemd/system.conf.orig
Suchen Sie hier nach DefaultTimeoutStopSec. Es sollte wahrscheinlich auf 90 Sekunden eingestellt werden.
#DefaultTimeoutStopSec=90s
Sie müssen diesen Wert auf etwas Praktischeres wie 5 oder 10 Sekunden ändern.
DefaultTimeoutStopSec=5s
Wenn Sie nicht wissen, wie Sie die Konfigurationsdatei im Terminal bearbeiten, verwenden Sie diesen Befehl, um die Datei zur Bearbeitung im Standard-Texteditor Ihres Systems (wie Gedit) zu öffnen:
sudo xdg-open /etc/systemd/system.conf
Vergessen Sie nicht, das # vor DefaultTimeoutStopSec zu entfernen . Speichern Sie die Datei und starten Sie Ihr System neu.
Dies sollte Ihnen helfen, die Verzögerung beim Herunterfahren Ihres Linux-Systems zu reduzieren.
Watchdog-Problem!
Linux hat ein Modul namens watchdog, mit dem überwacht wird, ob bestimmte Dienste ausgeführt werden oder nicht. Es könnte so konfiguriert werden, dass Systeme automatisch neu gestartet werden, wenn sie aufgrund eines Softwarefehlers hängen bleiben.
Es ist ungewöhnlich, Watchdog auf Desktop-Systemen zu verwenden, da Sie das System manuell herunterfahren oder neu starten können. Es wird oft auf entfernten Servern verwendet.
Erster Check-Watchdog läuft:
ps -af | grep watch*
Wenn Watchdog auf Ihrem System läuft, können Sie den ShutdownWatchdogSec-Wert in der systemd-Konfigurationsdatei /etc/systemd/system.conf.
von 10 Minuten auf einen niedrigeren Wert ändernEmpfohlene Lektüre:
Finden Sie heraus, wie lange es dauert, Ihr Linux-System hochzufahren
Wie lange braucht Ihr Linux-System zum Booten? So finden Sie es mit dem Befehl systemd-analyze heraus.
Konnten Sie die langwierige Abschaltung beheben?
Ich hoffe, dieses Tutorial hat Ihnen geholfen, das Problem mit dem langen Herunterfahren auf Ihrem System zu untersuchen und zu beheben. Lassen Sie mich in den Kommentaren wissen, ob Sie es geschafft haben, es zu beheben.