Was ist der Unterschied zwischen reboot, init 6 und shutdown -r now?


100

Ich möchte nur den Unterschied zwischen in wissen

  • reboot
  • init 6
  • shutdown -r now

und welches ist das sicherste und das beste?


1
Das genaue Verhalten dieser drei Befehle variiert von Betriebssystem zu Betriebssystem.
Thorbjørn Ravn Andersen

Antworten:


83

Es gibt keinen Unterschied in ihnen. Intern machen sie genau dasselbe:

  • rebootverwendet den shutdownBefehl (mit der Option -r). Der Befehl shutdown bricht alle laufenden Prozesse ab, hebt die Bereitstellung aller Dateisysteme auf und fordert den Kernel schließlich auf, den Befehl ACPI power abzusetzen. Die Quelle finden Sie hier . In älteren Distributionen erzwang der Neustartbefehl das Beenden der Prozesse durch Ausgabe des SIGKILLSignals (das immer noch in den Quellen vorhanden ist und mit der -fOption aufgerufen werden kann ). In den neuesten Distributionen war dies standardmäßig die elegantere und einleitungsfreundlichere Version init 1 -> shutdown -r. Dies stellt sicher, dass Daemons sich vor dem Herunterfahren selbst bereinigen.

  • init 6Weist den initProzess an, alle gespawnten Prozesse / Daemons wie in den Init-Dateien beschrieben herunterzufahren (in der umgekehrten Reihenfolge, in der sie gestartet wurden) und zuletzt den shutdown -r nowBefehl zum Neustart des Computers aufzurufen

Heutzutage gibt es keinen großen Unterschied, da beide Befehle genau dasselbe tun, und sie respektieren die Init-Skripte, die zum Starten von Diensten / Daemons verwendet werden, indem sie die Shutdown-Skripte für sie aufrufen. Ausgenommen reboot -f -r nowwie unten angegeben

Es gibt eine kleine Erklärung aus den Hilfeseiten, warum das reboot -fnicht sicher ist:

  -f, --force
    Sofortiges Anhalten, Ausschalten und Neustarten erzwingen. Wenden Sie sich nicht an das Init-System.

Bearbeiten:

Ich habe vergessen zu erwähnen, dass Sie in zukünftigen RHEL-Distributionen den neuen systemctlBefehl verwenden sollten, um das Ausschalten / Neustarten durchzuführen. Wie in den Hilfeseiten von rebootund angegeben, shutdownhandelt es sich um "einen Legacy-Befehl, der nur aus Kompatibilitätsgründen verfügbar ist". und die systemctlMethode wird die einzige sichere sein.


Manchmal hängt mein Neustart am SIGTERM, gibt es eine Möglichkeit zu wissen, warum und gibt es eine Möglichkeit, den Neustart zu unterbrechen, sodass ein zu langer Neustart erzwungen wird?
CMCDragonkai

2
Diese RHEL-Versionen stehen nicht mehr "an". ☺ Wie unter unix.stackexchange.com/a/196014/5132 ausführlicher erläutert , gibt es auf solchen Betriebssystemen überhaupt keinen Unterschied. Sie sind nicht einmal verschiedene Programme.
JdeBP

Hast du mit diesen Worten getippt init 1 -> shutdown -r?
deed02392

Dein Link ist kaputt.
whoKnows

8

Das Herunterfahren ist vorzuziehen, da Sie hier den Grund für die drastische Aktion angeben können - etwas, das Sie immer tun sollten. Die Nachricht wird in den Protokollen für die Nachwelt aufgezeichnet. Zum Beispiel:

shutdown -r now 'Kernel upgrade requires reboot'

Sie können auch einen geplanten Neustart durchführen, indem Sie etwas anderes als nowdie Neustartzeit angeben:

shutdown -r 22:00 'Work around kernel memory leak'

Dann werden Ihre Benutzer regelmäßig daran erinnert, mit der Zeit auszusteigen - der Prozess wird ordentlicher und professioneller.


5

Auf traditionellen Unices rebootund shutdown -r nowsind ganz andere Befehle. Bei normaler Verwendung rebootist die Verwendung nur im Einzelbenutzermodus sicher.

shutdown -r nowist die kanonische Methode zum Herunterfahren über verschiedene * nixe hinweg und sicherer im Allgemeinen und ist funktional äquivalent zu init 6.

Init (8) Neustart (8)


4

Unter FreeBSD gibt es einen Unterschied zwischen rebootund shutdown -r now. Von der rebootManpage:

Normalerweise wird das Dienstprogramm shutdown (8) verwendet, wenn das System angehalten oder neu gestartet werden muss, um Benutzer vor dem bevorstehenden Schicksal zu warnen und bestimmte Programme sauber zu beenden.


1
Dies ist jedoch keine BSD-Frage, wie das Tag in der Frage und die Verwendung einer System 5-Run-Ebene in einem der Befehle belegen. ☺
JdeBP

1
Ich weiß, dass es sich um eine Linux-Frage handelt. Ich dachte, jemand könnte es nützlich finden zu wissen, dass dies auf einigen anderen Systemen ein Unterschied ist.
Marián Černý
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.