Dlaczego potrzebujemy funkcji restartu w różnych plikach binarnych?

12

Dlaczego potrzebujemy funkcji restartu w różnych plikach binarnych?

shutdown -r

i

reboot

Czy różnią się w czymś?

LanceBaynes
źródło
1
Zobacz rozróżnienie na unix.stackexchange.com/questions/8690/ ... - komendy mogą zachowywać się inaczej w zależności od systemu operacyjnego (ale ogólnie robią to samo w Linuksie).
PleaseStand
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.

ikonoklasta
źródło
1
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).

Richard Downer
źródło
6

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.

Warren Young
źródło
1
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 .
JdeBP