Odpowiedzi:
Zasadniczo używa się shutdownpolecenia . 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 shutdownmówi inito zmianie na poziom 0 (zatrzymanie) lub 6 (ponowne uruchomienie). (Pamiętaj, że pominięcie -hlub -rspowoduje 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 haltlubreboot , które synchronizuje zmiany na dyskach, a następnie wykonuje faktyczne zatrzymanie / wyłączenie zasilania lub ponowne uruchomienie.
W systemie Linux, jeśli haltlub rebootjest uruchamiany, gdy system nie rozpoczął jeszcze procesu zamykania, wywoła shutdownpolecenie automatycznie, zamiast bezpośrednio wykonywać zamierzoną akcję. Jednak w systemach takich jak FreeBSD komendy te najpierw logują akcję, wtmpa następnie natychmiast wykonują zatrzymanie / ponowne uruchomienie komputera, bez wcześniejszego zabijania procesów lub odmontowywania systemów plików.
halt, rebootoraz shutdownprogramy, 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, rebooti shutdown. System 5 UNIX miał zestaw narzędzi zgodny z BSD. Ale natywnie miał swoje własne, inne shutdownpolecenie; i nie miałem haltlub rebootwcale. (Niektóre warianty Systemu 5 miały takie rzeczy jak SCO XENIX haltsys.)
BSD halti rebootpolecenia były na niskim poziomie, drastyczne i natychmiastowe. Taktowny sposób na zamknięcie systemu BSD było shutdownpolecenie, które nie wszystkie rzeczy, które oczekuje się zdarzyć: wallwiadomoś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 „ shutdownexecs 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/ rebootbył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+ rci 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 poweroffpolecenie, 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 halti shutdownsą 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 --halti poweroff --reboot, jak już wspomniano w stronie podręcznika dla nosh halt, fasthalt, reboot, fastboot, i poweroffpolecenia. ☺
halt, reboot, poweroff, telinit, I shutdownto wszystko jeden program . To właściwie własny systemctlprogram 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 halti jego opcjami polecenia do wyzwalania akcji, a używaniem shutdowni 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 nowjest taka sama jak poweroff.
BSD w dużej mierze zachowują swoją semantykę z lat 80. halti shutdowndlatego nie są bardzo równoważne w swoich zestawach narzędzi. halti rebootsą jednym programem; i nadal są na niskim poziomie, natychmiastowe i drastyczne. Podczas gdy, shutdowna powerofftakże w jednym programie, wykonuj wszystkie ważne rzeczy, takie jak zaplanowane zamykanie, pisanie wallwiadomości, akcje rejestrowania, wyłączanie logowania i tak dalej.
W zestawach narzędzi BSD shutdown/ powerofftradycyjnie kończyło się na wywoływaniu halt/ w rebootcelu wprowadzenia ostatecznej zmiany stanu systemu. (Często w dzisiejszych czasach niepoprawna) otrzymała mądrość, że „ shutdownexec halt/ reboot” w rzeczywistości nadal utrzymuje NetBSD i OpenBSD. Ale w FreeBSD / TrueOS / DragonFlyBSD dzieje się tak tylko wtedy, gdy -oopcja 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. initwykonuje wszystkie zarządzanie stanem systemu w tych systemach.
Na każdym z nich, opcja mniej shutdown nownie jest równoznaczne z dowolnego halt, rebootlub 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 fastbootto wszystko jeden program. Jest to podkładka kompatybilności wstecznej, która zwykle po prostu łączy shutdown, przeciwnie do otrzymanej mądrości. Ta --forceopcja powoduje, że system-controlzamiast tego łańcuch .
Tak więc nie ma różnicy (nieobecnej --force) między haltpoleceniem a shutdownpoleceniem (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, rebooti poweroffwszystkie są jednym programem, który zwykle łączy się z shutdown; chyba że --forceużyto opcji, która powoduje, że reboot()system sam się wywołuje.
Zatem znowu nie ma różnicy (nieobecnej --force) między haltpoleceniem a shutdownpoleceniem (z równoważną opcją) w tym zestawie narzędzi. Również znowu, bez opcji shutdown now(które żadna z halt, rebootlub poweroffmoż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+ rczestaw narzędziPonownie, w tym zestawie narzędzi ma zastosowanie przeciwieństwo otrzymanej mądrości BSD halti rebootpo 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. shutdownz kolei łańcuchy do init.
Zatem znowu nie ma różnicy (chyba że system jest już w dużej mierze zamknięty) między halti shutdownponieważ ten pierwszy wywołuje ten drugi. I tak, znowu, bez opcji shutdown now(które żadna z halt, rebootlub poweroffmoż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 -hi shutdown -rodpowiednio. Zamknięcie systemu bez słów zakłada na ogół -h.
aliasesw sensie aliasów powłoki, ale tak, w haltzasadzie po prostu wywołują shutdown -hi rebooturuchamiają shutdown -r. Zauważ, że jeśli przekażesz -fopcję (force) do haltlub reboot, nieshutdown zostanie wywołane.
sendmailpolecenia w tym momencie - Podobnie jak w przypadku MTA, tak naprawdę nie ma znaczenia, jakiego systemu init używasz, ponieważ wszystkie rozpoznają jedno shutdowni drugie halt.
sendmailpolecenia. To jest jak sendmailpolecenie, ale nie tak, jak myślisz.