Warum verhält sich "shutdown -r now" anders als "reboot -f" unter Debian Linux?

11

Ich musste mich kürzlich mit einem lästigen, zeitweise auftretenden Problem mit NFS-Client / Server-Mount-Mount-Punkten befassen. Wenn das Problem auf dem Client auftritt, kann ich die Bereitstellung nicht aufheben, zusammen mit einem anderen merkwürdigen Verhalten. Die einzige sofortige Lösung, die ich bisher habe, ist ein Neustart der Client-Box.

Funktioniert aber shutdown -r nowüberhaupt nicht. Ich habe seitdem entdeckt reboot -f, was tut das System neu starten. Warum? Ich habe die Manpages gelesen, aber nichts scheint meine Frage zu beantworten.

Warum shutdown -r nowverhält sich anders als reboot -f?

(Ich löse das NFS-Problem weiterhin, aber das ist hier nicht meine Frage.)

Stu Thompson
quelle

Antworten:

20

Von der Manpage zum Herunterfahren:

Nach Ablauf der ZEIT sendet das Herunterfahren eine Anforderung an den init (8) -Dämon, um das System auf den entsprechenden Runlevel herunterzufahren.

initStartet und stoppt Jobs, wenn das System die Runlevel ändert. Bei der Eingabe von Runlevel 6 aufgrund eines Neustarts führt das System alle Skripte in /etc/rc6.d aus. Da Ihr System nicht reagiert shutdown, steckt wahrscheinlich ein Skript in /etc/rc6.d(möglicherweise K05nfs-commonaufgrund Ihrer NFS-Probleme) fest, sodass die Sequenz zum Herunterfahren nicht beendet werden kann. Tatsächlich wird init beim Wechsel zu Runlevel 6 als letztes ausgeführt reboot -d -f -i.

reboot -f Überspringt alle Skripte und startet das System direkt neu.

Cakemox
quelle
Vielen Dank, dass Sie Ihre Antwort mit meinem Kontext verknüpft haben.
Stu Thompson
12

shutdownweist Sie initan, mit dem Herunterfahren zu beginnen. Dazu müssen angemeldete Benutzer wissen, dass das System heruntergefahren wird, alle Prozesse ordnungsgemäß abgebrochen werden, Laufwerke abgemeldet und synchronisiert werden usw. Sie werden hier aufgehängt, weil Prozesse, die auf E / A warten, in der Regel sehr schwer zu beenden sind und Ihr feststeckender NFS-Mount nicht ausgehängt werden kann.

reboot -fAuf der anderen Seite wird der Server sofort neu gestartet, ohne dies zu tun. ( Ist rebootdas Programm init, um den Server herunterzufahren. Ohne das -fFlag wird geprüft, ob es initdenkt, dass es gerade neu gestartet wird, und wenn nicht, wird es shutdownstattdessen aufgerufen , um den Prozess zu starten.)

DerfK
quelle
Vielen Dank, dass Sie Ihre Antwort mit meinem Kontext verknüpft haben.
Stu Thompson
4

Da 'reboot -f' nicht in Runlevel 0 geht, weist es das Betriebssystem an, die CPU direkt neu zu initialisieren. Die Manpage auf meiner nächsten Linux-Box sagt:

 -f     Force halt or reboot, don't call shutdown(8)

Die Manpage zum Herunterfahren erklärt mehr.

symcbean
quelle
1

Wenn Sie die intrOption auf Ihren NFS-Bereitstellungen verwenden, shutdown -r nowsollten Sie in der Lage sein, Prozesse zu beenden, die auf den Abschluss von NFS IO warten. Dies kann zu einer Beschädigung der Datei führen, aber wahrscheinlich nicht mehr als shutdown -ferstellt.

BillThor
quelle