Die Unterscheidung finden Sie unter unix.stackexchange.com/questions/8690/… - Die Befehle können sich je nach Betriebssystem unterschiedlich verhalten (unter Linux jedoch im Allgemeinen genauso).
PleaseStand
Wie unten angegeben und unter unix.stackexchange.com/a/196014/5132 ausführlich erläutert , ist die Prämisse dieser Frage unter Linux-Betriebssystemen falsch. Dies sind keine unterschiedlichen Binärdateien auf solchen Systemen.
JdeBP
Antworten:
15
Wir brauchen sie nicht unbedingt beide, aber wir haben sie beide aufgrund der Geschichte von Unix und seiner Vielzahl von Versionen.
Aus ihren jeweiligen Manpages:
Das Dienstprogramm zum Herunterfahren erschien in 4.0BSD.
In Version 6 von AT & T UNIX wurde ein Dienstprogramm zum Neustart angezeigt.
Das Herunterfahren ist universeller und leistungsfähiger, während der Neustart benutzerfreundlicher und leichter zu merken ist.
Mit shutdown können Sie ein temporäres Argument angeben (z. B. für einen Neustart in 5 Minuten) und neben dem Neustart viele weitere Aktionen ausführen, darunter:
Sie können Benutzer nur anstoßen und nicht wirklich herunterfahren
Sie können das System in den Ruhezustand versetzen, anstatt es herunterzufahren
Sie können einfach herunterfahren, ohne neu zu starten (wie der Befehl stop)
Sie können eine benutzerdefinierte Warnmeldung für Benutzer im System einfügen
Wenn Sie das System jetzt nur neu starten möchten, ist die Eingabe einfacher rebootals shutdown -r now.
Unterhaltsame Tatsache: Einige Versionen shutdownwerden jetzt standardmäßig verwendet. Versuchen Sie shutdown -hniemals, Hilfe zum Herunterfahren zu erhalten , insbesondere nicht auf einem Server irgendwo in einem Datencenter.
Residuum
6
Die beiden Befehle machen etwas anderes, aber sie können sich gegenseitig anrufen, weshalb sie anscheinend dasselbe tun!
rebootRuft den Kernel auf, um einen Neustart der Hardware auszulösen. Dies geschieht jedoch nur, wenn das System zum Herunterfahren bereit ist - alle Daemons und Benutzerprozesse sollten gestoppt, Dateisysteme nicht gemountet usw. werden. Daher wird der Runlevel des Systems überprüft, und wenn er nicht 0 oder 6 ist, wird er tatsächlich aufgerufen Der shutdownBefehl für Sie.
shutdownbewirkt, dass der Runlevel des Systems geändert wird. Die Runlevel-Änderung (auf 0 für Halt oder 6 für Neustart) führt viele Skripte in /etc/rc0.d oder rc6.d aus, die Daemons herunterfahren, Dateisysteme aushängen usw. Schließlich rufen diese Skripte auf haltoder reboot- diesmal befindet sich das System in das richtige Runlevel und sie weisen den Kernel an, neu zu starten (oder anzuhalten).
Zusätzlich zu dem, was iconoclast geschrieben hat, gibt es einen wichtigen Unterschied zwischen den beiden Programmen: shutdownis in /sbin, while rebootin /usr/bin.
Warum ist das wichtig, fragst du? Ich werde es dir sagen.
Unter den Dingen /usrsind solche zu verstehen, die erst verfügbar sein müssen, wenn das System so weit hochgefahren wurde, dass das System nur minimal funktionsfähig ist. Top-Level - Verzeichnisse , die traditionell nie auf separate Dateisystemen montiert - /bin, /etc, /sbinetc. - werden voraussichtlich verfügbar sein , während das System diesen minimal nützlich Zustand erreicht. Es gibt verschiedene Implikationen dieses Entwurfs; Zum Beispiel ist es ein schlechter Stil, die "stop" -Klausel eines SysV-Init-Skripts zu schreiben, das Programme verwendet, /usr/binwenn es in /binoder eine Alternative gibt /sbin.
shutdownist das wichtigste Dienstprogramm, das immer verfügbar ist. rebootist nur ein Hilfsprogramm.
rebootist in /sbinDebian (mit SysVinit) und Ubuntu (mit Upstart).
Gilles 'SO- hör auf böse zu sein'
Okay, also Meta-Antwort: Kenne dein System. :) Ich benutze CentOS am häufigsten.
Warren Young
Gleiches für Arch (systemd), beide in / sbin
daisy
In der Tat ist auf Linux-Betriebssystemen von systemd weder das Schlüsseldienstprogramm noch das Dienstprogramm, da bei systemd alle diese Befehle "Kompatibilitätsbefehle" sind (wie es das systemd doco hat). In der Tat ist die Prämisse der Frage falsch. Sie befinden sich nicht in verschiedenen Binärdateien. Weitere Informationen finden Sie unter unix.stackexchange.com/a/196014/5132 .
Antworten:
Wir brauchen sie nicht unbedingt beide, aber wir haben sie beide aufgrund der Geschichte von Unix und seiner Vielzahl von Versionen.
Aus ihren jeweiligen Manpages:
Das Herunterfahren ist universeller und leistungsfähiger, während der Neustart benutzerfreundlicher und leichter zu merken ist.
Mit shutdown können Sie ein temporäres Argument angeben (z. B. für einen Neustart in 5 Minuten) und neben dem Neustart viele weitere Aktionen ausführen, darunter:
Wenn Sie das System jetzt nur neu starten möchten, ist die Eingabe einfacher
reboot
alsshutdown -r now
.quelle
shutdown
werden jetzt standardmäßig verwendet. Versuchen Sieshutdown -h
niemals, Hilfe zum Herunterfahren zu erhalten , insbesondere nicht auf einem Server irgendwo in einem Datencenter.Die beiden Befehle machen etwas anderes, aber sie können sich gegenseitig anrufen, weshalb sie anscheinend dasselbe tun!
reboot
Ruft den Kernel auf, um einen Neustart der Hardware auszulösen. Dies geschieht jedoch nur, wenn das System zum Herunterfahren bereit ist - alle Daemons und Benutzerprozesse sollten gestoppt, Dateisysteme nicht gemountet usw. werden. Daher wird der Runlevel des Systems überprüft, und wenn er nicht 0 oder 6 ist, wird er tatsächlich aufgerufen Dershutdown
Befehl für Sie.shutdown
bewirkt, dass der Runlevel des Systems geändert wird. Die Runlevel-Änderung (auf 0 für Halt oder 6 für Neustart) führt viele Skripte in /etc/rc0.d oder rc6.d aus, die Daemons herunterfahren, Dateisysteme aushängen usw. Schließlich rufen diese Skripte aufhalt
oderreboot
- diesmal befindet sich das System in das richtige Runlevel und sie weisen den Kernel an, neu zu starten (oder anzuhalten).quelle
Zusätzlich zu dem, was iconoclast geschrieben hat, gibt es einen wichtigen Unterschied zwischen den beiden Programmen:
shutdown
is in/sbin
, whilereboot
in/usr/bin
.Warum ist das wichtig, fragst du? Ich werde es dir sagen.
Unter den Dingen
/usr
sind solche zu verstehen, die erst verfügbar sein müssen, wenn das System so weit hochgefahren wurde, dass das System nur minimal funktionsfähig ist. Top-Level - Verzeichnisse , die traditionell nie auf separate Dateisystemen montiert -/bin
,/etc
,/sbin
etc. - werden voraussichtlich verfügbar sein , während das System diesen minimal nützlich Zustand erreicht. Es gibt verschiedene Implikationen dieses Entwurfs; Zum Beispiel ist es ein schlechter Stil, die "stop" -Klausel eines SysV-Init-Skripts zu schreiben, das Programme verwendet,/usr/bin
wenn es in/bin
oder eine Alternative gibt/sbin
.shutdown
ist das wichtigste Dienstprogramm, das immer verfügbar ist.reboot
ist nur ein Hilfsprogramm.quelle
reboot
ist in/sbin
Debian (mit SysVinit) und Ubuntu (mit Upstart).