Jaka jest różnica między poleceniami halt
i shutdown
?
źródło
Zasadniczo używa się shutdown
polecenia . Umożliwia opóźnienie czasowe i komunikat ostrzegawczy przed zamknięciem lub ponownym uruchomieniem, co jest ważne dla administrowania systemem serwerów powłoki wielu użytkowników; może zapewnić użytkownikom wcześniejsze powiadomienie o przestoju.
W związku z tym należy użyć polecenia shutdown w taki sposób, aby natychmiast zatrzymać / wyłączyć komputer (przynajmniej w Linuksie i FreeBSD):
shutdown -h now
Lub uruchom ponownie z niestandardowym 30-minutowym wyprzedzeniem:
shutdown -r +30 "Planned software upgrades"
Po opóźnieniu shutdown
mówi init
o zmianie na poziom 0 (zatrzymanie) lub 6 (ponowne uruchomienie). (Pamiętaj, że pominięcie -h
lub -r
spowoduje przejście systemu w tryb jednego użytkownika (poziom 1), który zabija większość procesów systemowych, ale w rzeczywistości nie zatrzymuje systemu; nadal pozwala administratorowi pozostać zalogowanym jako root.)
Po zabiciu procesów systemowych i odmontowaniu systemów plików system zatrzymuje się / wyłącza lub automatycznie uruchamia się ponownie. Odbywa się to za pomocą polecenia halt
lubreboot
, które synchronizuje zmiany na dyskach, a następnie wykonuje faktyczne zatrzymanie / wyłączenie zasilania lub ponowne uruchomienie.
W systemie Linux, jeśli halt
lub reboot
jest uruchamiany, gdy system nie rozpoczął jeszcze procesu zamykania, wywoła shutdown
polecenie automatycznie, zamiast bezpośrednio wykonywać zamierzoną akcję. Jednak w systemach takich jak FreeBSD komendy te najpierw logują akcję, wtmp
a następnie natychmiast wykonują zatrzymanie / ponowne uruchomienie komputera, bez wcześniejszego zabijania procesów lub odmontowywania systemów plików.
halt
,reboot
orazshutdown
programy, które powołać jedną inną. Istnieje jeden program z wieloma parserami wiersza poleceń, które wewnętrznie przechodzą w jedną ścieżkę kodu. Nie ma też poziomów uruchamiania. Wyłączenie nie przechodzi również w tryb pojedynczego użytkownika. W rzeczywistości sam tryb pojedynczego użytkownika został przemianowany. Aby uzyskać szczegółowe informacje, zobacz unix.stackexchange.com/a/196014/5132 .Przeszłość
W 1980 roku, BSD miał
halt
,reboot
ishutdown
. System 5 UNIX miał zestaw narzędzi zgodny z BSD. Ale natywnie miał swoje własne, inneshutdown
polecenie; i nie miałemhalt
lubreboot
wcale. (Niektóre warianty Systemu 5 miały takie rzeczy jak SCO XENIXhaltsys
.)BSD
halt
ireboot
polecenia były na niskim poziomie, drastyczne i natychmiastowe. Taktowny sposób na zamknięcie systemu BSD byłoshutdown
polecenie, które nie wszystkie rzeczy, które oczekuje się zdarzyć:wall
wiadomości do użytkowników, usługi wdzięcznie zabity wpisy napisane dziennika logowania wyłączona, i tak dalej.Podczas gdy BSD były w dużej mierze źródłem otrzymanej mądrości, że „
shutdown
execshalt
/reboot
”, i że te ostatnie miały być używane ostrożnie; był to system 5 świat, w którym ludzie nauczyli się, że zwyczaj przeciwnyhalt
/reboot
były tylko poręczne shorthands i nic więcej:/usr/ucb/halt
, z „Pakietu zgodności BSD”, nie różnił się w istocie doshutdown -h
. Obaj skończyliinit 0
.Dalsza lektura
halt
. 1982-05-11. 4.2BSD manual.haltsys
. 2005-06-03. Instrukcja SCO OpenServer.Dzisiaj
Obecnie mamy szereg możliwych zestawów narzędzi do zarządzania systemem. BSD wciąż mają swój zestaw narzędzi, chociaż w latach 90. zostały oczyszczone z wszelkich możliwych AT & Tisms. Miquel van Smoorenburg w 1992 roku (ponownie) napisał Linux
init
+rc
i powiązane z nim narzędzia, które ludzie nazywają teraz „init System 5”, mimo że tak naprawdę nie jest to oprogramowanie z systemu UNIX System 5 (i to nie tylkoinit
). Istnieją również Systemd , dorobkiewicz i nosh , z których każdy ma swoje własne implementacje zhalt
,reboot
,fasthalt
,fastboot
, i tak dalej.Zestawy narzędzi również się powiększyły i zmieniły. Istnieje teraz
poweroff
polecenie, którego nie ma w systemach operacyjnych z lat 80., ponieważ centralne jednostki przetwarzania na większości współczesnych maszyn nie miały możliwości kontrolowania swoich zasilaczy. W szczególności zestawy narzędzi dla systemu Linux uzyskały polecenia BSD; ale podobnie jak narzędzia kompatybilności z BSD w systemie UNIX System 5, nie są one dokładnymi podobieństwami i zostały w dużej mierze spłaszczone.To spłaszczenie doprowadziło nas do punktu, w którym
halt
ishutdown
są w większości takie same. Ale dokładne szczegóły różnią się w zależności od zestawu narzędzi, a mechanika każdego zestawu narzędzi jest nieco inna.Stwierdzono również przyniósł nam do nieco kłopotliwej sytuacji, w której ten zestaw poleceń stała się tak obwieszone z opcji zgodności, że teraz pozwala ludziom dać komputery instrukcjami wewnętrznie sprzeczne, jak
reboot --halt
ipoweroff --reboot
, jak już wspomniano w stronie podręcznika dla noshhalt
,fasthalt
,reboot
,fastboot
, ipoweroff
polecenia. ☺Zestaw narzędzi systemowych
halt
,reboot
,poweroff
,telinit
, Ishutdown
to wszystko jeden program . To właściwie własnysystemctl
program systemowy . Ma kilka parserów wiersza poleceń dla różnych składni wiersza poleceń tych poleceń, a także własne, ale potem w dużej mierze kieruje wewnętrznie jedną ścieżkę kodu. Nie ma różnicy między używaniemhalt
i jego opcjami polecenia do wyzwalania akcji, a używaniemshutdown
i opcjami polecenia do wyzwalania tej samej akcji.Systemd nie uważa trybu ratunkowego (który nazwali ludzie z systemem za tryb pojedynczego użytkownika ) jako stanu zamknięcia systemu i nie można go osiągnąć za pomocą żadnej z tych komend. Opcja bez opcji
shutdown now
jest taka sama jakpoweroff
.Dalsza lektura:
BSD
BSD w dużej mierze zachowują swoją semantykę z lat 80.
halt
ishutdown
dlatego nie są bardzo równoważne w swoich zestawach narzędzi.halt
ireboot
są jednym programem; i nadal są na niskim poziomie, natychmiastowe i drastyczne. Podczas gdy,shutdown
apoweroff
także w jednym programie, wykonuj wszystkie ważne rzeczy, takie jak zaplanowane zamykanie, pisaniewall
wiadomości, akcje rejestrowania, wyłączanie logowania i tak dalej.W zestawach narzędzi BSD
shutdown
/poweroff
tradycyjnie kończyło się na wywoływaniuhalt
/ wreboot
celu wprowadzenia ostatecznej zmiany stanu systemu. (Często w dzisiejszych czasach niepoprawna) otrzymała mądrość, że „shutdown
exechalt
/reboot
” w rzeczywistości nadal utrzymuje NetBSD i OpenBSD. Ale w FreeBSD / TrueOS / DragonFlyBSD dzieje się tak tylko wtedy, gdy-o
opcja jest używana. Na te BSD, zarówno tych programów zwykle wprowadzają ostateczną zmianę stanu systemu wysyłając różne sygnały (INT
,USR1
, iUSR2
) przetwarzanie # 1.init
wykonuje wszystkie zarządzanie stanem systemu w tych systemach.Na każdym z nich, opcja mniej
shutdown now
nie jest równoznaczne z dowolnegohalt
,reboot
lubpoweroff
. Przechodzi do trybu pojedynczego użytkownika BSD , z którego można przejść z powrotem do trybu wielu użytkowników .Dalsza lektura:
shutdown
. Podręcznik administratora systemu . Strony podręcznika NetBSD. 2011-11-04.reboot
,halt
. Strony podręcznika OpenBSD. 2016-09-03.shutdown
. Strony podręcznika FreeBSD. 21.09.2016.reboot
,halt
,fastboot
,fasthalt
. Strony podręcznika FreeBSD. 19.03.2017.shutdown
. Podręcznik administratora systemu . Strony podręcznika DragonFlyBSD. 29.09.2016.reboot
,halt
,fastboot
,fasthalt
. Podręcznik administratora systemu . Strony podręcznika DragonFlyBSD. 29.09.2016.Zestaw narzędzi Nosh
W nosh zestaw narzędzi do zarządzania systemem,
halt
,fasthalt
,poweroff
,fastpoweroff
,reboot
, ifastboot
to wszystko jeden program. Jest to podkładka kompatybilności wstecznej, która zwykle po prostu łączyshutdown
, przeciwnie do otrzymanej mądrości. Ta--force
opcja powoduje, żesystem-control
zamiast tego łańcuch .Tak więc nie ma różnicy (nieobecnej
--force
) międzyhalt
poleceniem ashutdown
poleceniem (z równoważną opcją) w tym zestawie narzędzi, ponieważ ten zestaw poleceń „Kompatybilność z BSD / System 5” jest po prostu cienką warstwą podkładkishutdown
.Dalsza lektura:
shutdown
. strony podręcznika użytkownika zestawu narzędzi nosh. Oprogramowania.telinit, init, reboot, halt, haltsys, powercycle, poweroff, … fastboot, fasthalt, fastpowercycle, fastpoweroff, …
strony podręcznika użytkownika zestawu narzędzi nosh. Oprogramowania.Zestaw narzędzi upstart
Podobnie jak w przypadku nosh, w zestawie narzędzi do zarządzania systemem upstart obowiązuje odwrotność otrzymanej mądrości BSD.
halt
,reboot
ipoweroff
wszystkie są jednym programem, który zwykle łączy się zshutdown
; chyba że--force
użyto opcji, która powoduje, żereboot()
system sam się wywołuje.Zatem znowu nie ma różnicy (nieobecnej
--force
) międzyhalt
poleceniem ashutdown
poleceniem (z równoważną opcją) w tym zestawie narzędzi. Również znowu, bez opcjishutdown now
(które żadna zhalt
,reboot
lubpoweroff
może zakończyć się wywoływaniem, ponieważ wszystkie ustawione opcje) wprowadzają system w tryb pojedynczego użytkownika, zamiast go wyłączać.Dalsza lektura:
shutdown
(8) . Strony podręcznika systemu Ubuntu.reboot
(8)halt
(8)poweroff
(8) . Strony podręcznika systemu Ubuntu.Linux System 5
init
+rc
zestaw narzędziPonownie, w tym zestawie narzędzi ma zastosowanie przeciwieństwo otrzymanej mądrości BSD
halt
ireboot
po prostu łańcuch doshutdown
- chyba, że system jest już w fazie wyłączenia lub zatrzymania „poziomów uruchomieniowych”, w którym to przypadku polecenia te faktycznie wprowadzają ostateczną zmianę stanu systemu.shutdown
z kolei łańcuchy doinit
.Zatem znowu nie ma różnicy (chyba że system jest już w dużej mierze zamknięty) między
halt
ishutdown
ponieważ ten pierwszy wywołuje ten drugi. I tak, znowu, bez opcjishutdown now
(które żadna zhalt
,reboot
lubpoweroff
może zakończyć się wywoływaniem, ponieważ wszystkie ustawione opcje) wprowadzają system w tryb pojedynczego użytkownika, zamiast go wyłączać.źródło
Podejrzewam, że jest to w pewnym stopniu zależne od używanej wersji systemu UNIX / Linux. Na Centos (i spodziewam się innych współczesnych Linuksów) zatrzymaj zamykanie połączeń (pod warunkiem, że nie masz poziomu 0 lub 6), aby system został zamknięty. W systemie Solaris 10 halt jest bardziej brutalny, po prostu opróżnia pamięć podręczną dysku i wyłącza system - nie próbuje się uruchamiać żadnych skryptów ani wyłączać funkcji smf .
źródło
Dla tych, którzy używają AWS EC2: na AWS
shutdown
zatrzymuje instancję, gdy jąhalt
kończy .źródło
W Linuksie „halt” i „restart” są aliasami polecenia zamykania -
shutdown -h
ishutdown -r
odpowiednio. Zamknięcie systemu bez słów zakłada na ogół -h.źródło
aliases
w sensie aliasów powłoki, ale tak, whalt
zasadzie po prostu wywołująshutdown -h
ireboot
uruchamiająshutdown -r
. Zauważ, że jeśli przekażesz-f
opcję (force) dohalt
lubreboot
, nieshutdown
zostanie wywołane.sendmail
polecenia w tym momencie - Podobnie jak w przypadku MTA, tak naprawdę nie ma znaczenia, jakiego systemu init używasz, ponieważ wszystkie rozpoznają jednoshutdown
i drugiehalt
.sendmail
polecenia. To jest jaksendmail
polecenie, ale nie tak, jak myślisz.