Jak zauważono poniżej i szczegółowo wyjaśniono na stronie unix.stackexchange.com/a/196014/5132 , założenie tego pytania jest fałszywe w przypadku systemowych systemów operacyjnych Linux. Nie są to różne pliki binarne w takich systemach.
JdeBP
Odpowiedzi:
15
Niekoniecznie potrzebujemy ich obu, ale mamy je obie ze względu na historię Uniksa i jego różnorodność wersji.
Z odpowiednich stron podręcznika:
Narzędzie zamykające pojawiło się w 4.0BSD.
Narzędzie do ponownego uruchomienia pojawiło się w wersji 6 AT&T UNIX.
zamknięcie systemu jest bardziej ogólne i wydajniejsze, a ponowne uruchomienie jest bardziej przyjazne i łatwiejsze do zapamiętania.
shutdown pozwala określić argument tymczasowy (na przykład w celu ponownego uruchomienia za 5 minut) i pozwala na wiele innych czynności poza restartem, w tym:
możesz po prostu wyrzucić użytkowników i nie wyłączać się
możesz uśpić system zamiast go wyłączać
możesz po prostu zamknąć system bez ponownego uruchamiania (jak polecenie zatrzymania)
możesz dołączyć niestandardowy komunikat ostrzegawczy dla użytkowników w systemie
Jeśli jednak chcesz teraz ponownie uruchomić system, łatwiej jest wpisać rebootniż shutdown -r now.
Ciekawostka: niektóre wersje są shutdownteraz domyślnie używane. Nie próbuj nigdy uzyskiwać pomocy przy zamykaniu systemu shutdown -h, szczególnie na serwerze gdzieś w centrum danych.
Residuum
6
Oba polecenia robią coś innego, jednak mogą się do siebie nawoływać, dlatego wydaje się, że robią to samo!
rebootwywoła jądro, aby faktycznie uruchomić sprzętowy restart. Jednak zrobi to tylko wtedy, gdy system będzie gotowy do zamknięcia - wszystkie demony i procesy użytkownika powinny zostać zatrzymane, systemy plików odmontowane itp. Więc sprawdza poziom uruchamiania systemu, a jeśli nie jest to 0 lub 6, wówczas faktycznie się wywoła shutdownpolecenia dla Ciebie.
shutdownpowoduje zmianę poziomu działania systemu. Zmiana poziomu uruchamiania (na 0 dla zatrzymania lub 6 dla ponownego uruchomienia) uruchamia wiele skryptów w /etc/rc0.d lub rc6.d, które zamykają demony, odmontowują systemy plików itp. Wreszcie te skrypty wywołują haltlub reboot- tym razem system jest w prawidłowy poziom działania i instruują jądro, aby zrestartowało się (lub zatrzymało).
Oprócz tego, co napisał iconoclast, istnieje ważne rozróżnienie między tymi dwoma programami: shutdownjest włączony /sbin, a rebootjest włączony /usr/bin.
Dlaczego to ma znaczenie, pytasz? Powiem Ci.
Poniżej /usrznajdują się te, które nie muszą być dostępne, dopóki system nie uruchomi się wystarczająco daleko, aby system był minimalnie funkcjonalny. Katalogi najwyższego poziomu, które nigdy nie są tradycyjnie montowane na oddzielnych systemach plików - /bin, /etc, /sbin, itd. - Oczekuje się, że będzie dostępna, gdy system jest osiągnięcie tego stanu minimalnie użyteczny. Istnieją różne implikacje tego projektu; na przykład, źle jest pisać klauzulę „stop” skryptu inicjującego SysV, który używa programów w, /usr/binjeśli istnieje alternatywa w /binlub /sbin.
shutdownjest kluczowym narzędziem, zawsze dostępnym. rebootjest tylko narzędziem wygody.
rebootjest w /sbinDebianie (z SysVinit) i Ubuntu (z upstart).
Gilles „SO - przestań być zły”
Okej, więc meta-odpowiedź: poznaj swój system. :) Najczęściej używam CentOS.
Warren Young,
To samo dotyczy Arch (systemd), zarówno w / sbin
daisy
Rzeczywiście, w systemdowych systemach operacyjnych Linux nie jest kluczowym narzędziem, ponieważ w systemd wszystkie te komendy są (jak ma to w systemd doco) komendy „kompatybilności”. Rzeczywiście, przesłanka pytania jest fałszywa. Nie znajdują się w różnych plikach binarnych. Aby uzyskać szczegółowe informacje, zobacz unix.stackexchange.com/a/196014/5132 .
Odpowiedzi:
Niekoniecznie potrzebujemy ich obu, ale mamy je obie ze względu na historię Uniksa i jego różnorodność wersji.
Z odpowiednich stron podręcznika:
zamknięcie systemu jest bardziej ogólne i wydajniejsze, a ponowne uruchomienie jest bardziej przyjazne i łatwiejsze do zapamiętania.
shutdown pozwala określić argument tymczasowy (na przykład w celu ponownego uruchomienia za 5 minut) i pozwala na wiele innych czynności poza restartem, w tym:
Jeśli jednak chcesz teraz ponownie uruchomić system, łatwiej jest wpisać
reboot
niżshutdown -r now
.źródło
shutdown
teraz domyślnie używane. Nie próbuj nigdy uzyskiwać pomocy przy zamykaniu systemushutdown -h
, szczególnie na serwerze gdzieś w centrum danych.Oba polecenia robią coś innego, jednak mogą się do siebie nawoływać, dlatego wydaje się, że robią to samo!
reboot
wywoła jądro, aby faktycznie uruchomić sprzętowy restart. Jednak zrobi to tylko wtedy, gdy system będzie gotowy do zamknięcia - wszystkie demony i procesy użytkownika powinny zostać zatrzymane, systemy plików odmontowane itp. Więc sprawdza poziom uruchamiania systemu, a jeśli nie jest to 0 lub 6, wówczas faktycznie się wywołashutdown
polecenia dla Ciebie.shutdown
powoduje zmianę poziomu działania systemu. Zmiana poziomu uruchamiania (na 0 dla zatrzymania lub 6 dla ponownego uruchomienia) uruchamia wiele skryptów w /etc/rc0.d lub rc6.d, które zamykają demony, odmontowują systemy plików itp. Wreszcie te skrypty wywołująhalt
lubreboot
- tym razem system jest w prawidłowy poziom działania i instruują jądro, aby zrestartowało się (lub zatrzymało).źródło
Oprócz tego, co napisał iconoclast, istnieje ważne rozróżnienie między tymi dwoma programami:
shutdown
jest włączony/sbin
, areboot
jest włączony/usr/bin
.Dlaczego to ma znaczenie, pytasz? Powiem Ci.
Poniżej
/usr
znajdują się te, które nie muszą być dostępne, dopóki system nie uruchomi się wystarczająco daleko, aby system był minimalnie funkcjonalny. Katalogi najwyższego poziomu, które nigdy nie są tradycyjnie montowane na oddzielnych systemach plików -/bin
,/etc
,/sbin
, itd. - Oczekuje się, że będzie dostępna, gdy system jest osiągnięcie tego stanu minimalnie użyteczny. Istnieją różne implikacje tego projektu; na przykład, źle jest pisać klauzulę „stop” skryptu inicjującego SysV, który używa programów w,/usr/bin
jeśli istnieje alternatywa w/bin
lub/sbin
.shutdown
jest kluczowym narzędziem, zawsze dostępnym.reboot
jest tylko narzędziem wygody.źródło
reboot
jest w/sbin
Debianie (z SysVinit) i Ubuntu (z upstart).