Warum benötigen wir die Neustartfunktion in verschiedenen Binärdateien?

12

Warum benötigen wir die Neustartfunktion in verschiedenen Binärdateien?

shutdown -r

und

reboot

Oder unterscheiden sie sich in etwas?

LanceBaynes
quelle
1
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.

Bilderstürmer
quelle
1
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).

Richard Downer
quelle
6

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.

Warren Young
quelle
1
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 .
JdeBP