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.
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.
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.
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.
Antworten:
Es gibt keinen Unterschied in ihnen. Intern machen sie genau dasselbe:
reboot
verwendet denshutdown
Befehl (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 desSIGKILL
Signals (das immer noch in den Quellen vorhanden ist und mit der-f
Option aufgerufen werden kann ). In den neuesten Distributionen war dies standardmäßig die elegantere und einleitungsfreundlichere Versioninit 1 -> shutdown -r
. Dies stellt sicher, dass Daemons sich vor dem Herunterfahren selbst bereinigen.init 6
Weist deninit
Prozess an, alle gespawnten Prozesse / Daemons wie in den Init-Dateien beschrieben herunterzufahren (in der umgekehrten Reihenfolge, in der sie gestartet wurden) und zuletzt denshutdown -r now
Befehl zum Neustart des Computers aufzurufenHeutzutage 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 now
wie unten angegebenEs gibt eine kleine Erklärung aus den Hilfeseiten, warum das
reboot -f
nicht sicher ist:Bearbeiten:
Ich habe vergessen zu erwähnen, dass Sie in zukünftigen RHEL-Distributionen den neuen
systemctl
Befehl verwenden sollten, um das Ausschalten / Neustarten durchzuführen. Wie in den Hilfeseiten vonreboot
und angegeben,shutdown
handelt es sich um "einen Legacy-Befehl, der nur aus Kompatibilitätsgründen verfügbar ist". und diesystemctl
Methode wird die einzige sichere sein.quelle
init 1 -> shutdown -r
?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
now
die 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.
quelle
Auf traditionellen Unices
reboot
undshutdown -r now
sind ganz andere Befehle. Bei normaler Verwendungreboot
ist die Verwendung nur im Einzelbenutzermodus sicher.shutdown -r now
ist die kanonische Methode zum Herunterfahren über verschiedene * nixe hinweg und sicherer im Allgemeinen und ist funktional äquivalent zuinit 6
.Init (8) Neustart (8)
quelle
Unter FreeBSD gibt es einen Unterschied zwischen
reboot
undshutdown -r now
. Von derreboot
Manpage:quelle