Odpowiedzi:
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
oraz shutdown
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 .
W 1980 roku, BSD miał halt
, reboot
i shutdown
. System 5 UNIX miał zestaw narzędzi zgodny z BSD. Ale natywnie miał swoje własne, inne shutdown
polecenie; i nie miałem halt
lub reboot
wcale. (Niektóre warianty Systemu 5 miały takie rzeczy jak SCO XENIX haltsys
.)
BSD halt
i reboot
polecenia były na niskim poziomie, drastyczne i natychmiastowe. Taktowny sposób na zamknięcie systemu BSD było shutdown
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
execs halt
/ 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 przeciwny halt
/ 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 do shutdown -h
. Obaj skończyli init 0
.
halt
. 1982-05-11. 4.2BSD manual.haltsys
. 2005-06-03. Instrukcja SCO OpenServer.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 tylko init
). Istnieją również Systemd , dorobkiewicz i nosh , z których każdy ma swoje własne implementacje z halt
, 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
i shutdown
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
i poweroff --reboot
, jak już wspomniano w stronie podręcznika dla nosh halt
, fasthalt
, reboot
, fastboot
, i poweroff
polecenia. ☺
halt
, reboot
, poweroff
, telinit
, I shutdown
to wszystko jeden program . To właściwie własny systemctl
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żywaniem halt
i jego opcjami polecenia do wyzwalania akcji, a używaniem shutdown
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 jak poweroff
.
BSD w dużej mierze zachowują swoją semantykę z lat 80. halt
i shutdown
dlatego nie są bardzo równoważne w swoich zestawach narzędzi. halt
i reboot
są jednym programem; i nadal są na niskim poziomie, natychmiastowe i drastyczne. Podczas gdy, shutdown
a poweroff
także w jednym programie, wykonuj wszystkie ważne rzeczy, takie jak zaplanowane zamykanie, pisanie wall
wiadomości, akcje rejestrowania, wyłączanie logowania i tak dalej.
W zestawach narzędzi BSD shutdown
/ poweroff
tradycyjnie kończyło się na wywoływaniu halt
/ w reboot
celu wprowadzenia ostatecznej zmiany stanu systemu. (Często w dzisiejszych czasach niepoprawna) otrzymała mądrość, że „ shutdown
exec halt
/ 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
, i USR2
) 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 dowolnego halt
, reboot
lub poweroff
. Przechodzi do trybu pojedynczego użytkownika BSD , z którego można przejść z powrotem do trybu wielu użytkowników .
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.W nosh zestaw narzędzi do zarządzania systemem, halt
, fasthalt
, poweroff
, fastpoweroff
, reboot
, i fastboot
to wszystko jeden program. Jest to podkładka kompatybilności wstecznej, która zwykle po prostu łączy shutdown
, przeciwnie do otrzymanej mądrości. Ta --force
opcja powoduje, że system-control
zamiast tego łańcuch .
Tak więc nie ma różnicy (nieobecnej --force
) między halt
poleceniem a shutdown
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ładki shutdown
.
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.Podobnie jak w przypadku nosh, w zestawie narzędzi do zarządzania systemem upstart obowiązuje odwrotność otrzymanej mądrości BSD. halt
, reboot
i poweroff
wszystkie są jednym programem, który zwykle łączy się z shutdown
; chyba że --force
użyto opcji, która powoduje, że reboot()
system sam się wywołuje.
Zatem znowu nie ma różnicy (nieobecnej --force
) między halt
poleceniem a shutdown
poleceniem (z równoważną opcją) w tym zestawie narzędzi. Również znowu, bez opcji shutdown now
(które żadna z halt
, reboot
lub poweroff
może zakończyć się wywoływaniem, ponieważ wszystkie ustawione opcje) wprowadzają system w tryb pojedynczego użytkownika, zamiast go wyłączać.
shutdown
(8) . Strony podręcznika systemu Ubuntu.reboot
(8) halt
(8) poweroff
(8) . Strony podręcznika systemu Ubuntu.init
+ rc
zestaw narzędziPonownie, w tym zestawie narzędzi ma zastosowanie przeciwieństwo otrzymanej mądrości BSD halt
i reboot
po prostu łańcuch do shutdown
- 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 do init
.
Zatem znowu nie ma różnicy (chyba że system jest już w dużej mierze zamknięty) między halt
i shutdown
ponieważ ten pierwszy wywołuje ten drugi. I tak, znowu, bez opcji shutdown now
(które żadna z halt
, reboot
lub poweroff
może zakończyć się wywoływaniem, ponieważ wszystkie ustawione opcje) wprowadzają system w tryb pojedynczego użytkownika, zamiast go wyłączać.
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 .
Dla tych, którzy używają AWS EC2: na AWS shutdown
zatrzymuje instancję, gdy ją halt
kończy .
W Linuksie „halt” i „restart” są aliasami polecenia zamykania - shutdown -h
i shutdown -r
odpowiednio. Zamknięcie systemu bez słów zakłada na ogół -h.
aliases
w sensie aliasów powłoki, ale tak, w halt
zasadzie po prostu wywołują shutdown -h
i reboot
uruchamiają shutdown -r
. Zauważ, że jeśli przekażesz -f
opcję (force) do halt
lub reboot
, 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ą jedno shutdown
i drugie halt
.
sendmail
polecenia. To jest jak sendmail
polecenie, ale nie tak, jak myślisz.