Shutdown (Begriff)
Shutdown untersuchen
Linux braucht zu lange zum Herunterfahren?
Schritte, um herauszufinden, was die Ursache für das verzögerte Herunterfahren ist
Ich hoffe, Sie sind ein wenig mit dem Konzept von sigterm und sigkill vertraut.
Wenn Sie Ihr Linux-System herunterfahren, sendet es den sigterm und bittet die laufenden Prozesse höflich, anzuhalten. Einige Prozesse benehmen sich falsch und ignorieren den Sigterm und laufen weiter.
Dies kann zu einer Verzögerung des Herunterfahrens führen, da Ihr System eine bestimmte Zeit lang auf das Anhalten der laufenden Prozesse wartet. Nach Ablauf dieser Zeitspanne sendet es das Kill-Signal, um alle noch laufenden Prozesse zu stoppen und das System herunterzufahren. Ich empfehle die Lektüre von sigterm vs. sigkill, um den Unterschied zu verstehen.
In manchen Fällen sehen Sie auf dem schwarzen Bildschirm eine Meldung wie "a stop job is running".
Wenn Ihr System zu lange zum Herunterfahren braucht, können Sie Folgendes tun:
- Prüfen Sie, welcher Prozess/Dienst zu lange braucht und ob Sie ihn entfernen oder neu konfigurieren können, damit er sich richtig verhält.
- Ändern Sie die Standardwartezeit, bevor Ihr System die laufenden Prozesse zwangsweise beendet. [Schnelle und schmutzige Lösung]
Ich verwende hier Ubuntu, das systemd verwendet. Die Befehle und Schritte hier sind für jede Linux-Distribution gültig, die systemd verwendet (die meisten tun das).
Prozesse, die das Herunterfahren verzögern
Wenn Sie herausfinden wollen, was los ist, sollten Sie überprüfen, was beim letzten Herunterfahren passiert ist. Verwenden Sie diesen Befehl, um die Macht des "Ich weiß, was Sie in der letzten Sitzung getan haben" zu erhalten (Wortspiel beabsichtigt):
journalctl -rb -1
Mit dem Befehl journalctl können Sie die Systemprotokolle lesen. Mit der Option '-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 ist genau das, was Sie brauchen, um das Problem des langen Herunterfahrens in Linux zu analysieren.
Finden Sie etwas Verdächtiges in den Protokollen? Gibt es einen Prozess/Dienst, der sich weigert, anzuhalten? Wenn ja, untersuchen Sie, ob Sie ihn ohne Nebenwirkungen entfernen oder neu konfigurieren können. Bitte entfernen Sie hier nicht einfach blindlings Dinge. Sie sollten Kenntnisse über den Prozess haben.
Beschleunigung des Shutdowns
Beschleunigen Sie das Herunterfahren unter Linux, indem Sie den Standard-Timeout für das Herunterfahren reduzieren [Quick fix]
Die Standardwartezeit für das Herunterfahren ist normalerweise auf 90 Sekunden eingestellt. Ihr System versucht, die Dienste nach dieser Zeitspanne zwangsweise zu beenden.
Wenn Sie möchten, dass Ihr Linux-System schnell herunterfährt, 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. Er sollte wahrscheinlich auf 90 Sekunden gesetzt werden.
#DefaultTimeoutStopSec=90s
Sie müssen diesen Wert auf einen bequemeren Wert wie 5 oder 10 Sekunden ändern.
StandardTimeoutStopSec=5s
Wenn Sie nicht wissen, wie Sie die Konfigurationsdatei im Terminal bearbeiten können, verwenden Sie diesen Befehl, um die Datei zur Bearbeitung im Standardtexteditor 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 verringern.