it-swarm-eu.dev

Jaký je rozdíl mezi příkazy Halt a Shutdown?

Jaký je rozdíl mezi příkazy halt a shutdown?

100
wassimans

Obecně se používá příkaz shutdown příkaz . Umožňuje časové zpoždění a varovnou zprávu před vypnutím nebo restartem, což je důležité pro správu systému víceuživatelských serverů Shell; může uživatelům poskytnout včasné upozornění na prostoje.

Proto musí být příkaz vypnutí použit tímto způsobem, aby se počítač okamžitě zastavil/vypnul (alespoň v systémech Linux a FreeBSD):

shutdown -h now

Nebo jej restartujte pomocí vlastního 30minutového upozornění předem:

shutdown -r +30 "Planned software upgrades"

Po zpoždění, shutdown řekne init , aby změnil runlevel 0 (zastavení) nebo 6 (restartování). (Všimněte si, že vynecháte -h nebo -r způsobí, že systém přejde do režimu pro jednoho uživatele (runlevel 1), který zabije většinu systémových procesů, ale ve skutečnosti systém nezastaví; stále umožňuje administrátorovi zůstat přihlášeni jako root.)

Jakmile byly systémové procesy zabity a souborové systémy byly odpojeny, systém se zastaví/vypne nebo restartuje automaticky. To se provádí pomocí příkazu halt nebo reboot , který synchronizuje změny na disky a poté provede skutečné zastavení/vypnutí napájení nebo restartování.

Pokud je v systému Linux spuštěno halt nebo reboot, když systém ještě nespustil proces vypínání, vyvolá příkaz shutdown automaticky a ne přímo provádí zamýšlenou akci. Nicméně, v systémech, jako je FreeBSD , tyto příkazy nejprve zaznamenají akci v wtmp a poté okamžitě provedou samotné zastavení/restartování systému bez předchozího zabíjení procesů nebo odpojení souborových systémů.

80
PleaseStand

Minulost

V 80. letech měla BSD halt, reboot a shutdown. Systém 5 UNIX měl sadu nástrojů pro kompatibilitu s BSD. Ale nativně měl svůj vlastní, odlišný příkaz shutdown; a neměl vůbec halt nebo reboot. (Některé varianty systému 5 měly věci jako SCO XENIX's haltsys.)

Příkazy halt a reboot v BSD byly nízké, drastické a okamžité. Způsob ohleduplný způsob, jak vypnout systém BSD, byl příkaz shutdown, který provedl všechny věci, které člověk očekává: wall zprávy uživatelům, slušně zabité zprávy, zapsané položky protokolu , přihlášení zakázáno atd.

Zatímco BSD byly z velké části tam, kde přijatá moudrost vznikla, že „shutdown vykonává halt/reboot“, a že posledně jmenované měly být používány s opatrností; to byl svět System 5, kde se lidé naučili opaku, že halt/reboot byly jen šikovné zkratky a nic víc: _/usr/ucb/halt_, z „BSD Compatibility Package“, se nelišilo od _shutdown -h_. Oba skončili s _init 0_.

Další čtení

Dnes

V současné době máme řadu možných sad nástrojů pro správu systému. BSD mají stále sadu nástrojů, i když v 90. letech byly očištěny od případných AT & Tismů. Miquel van Smoorenburg v roce 1992 (znovu) napsal Linux init + rc a jejich přidružené nástroje, které lidé nyní označují jako „System 5 init“, i když ve skutečnosti to není software od UNIX System 5 (a není ' t jen init). Existují také systemd , pstart a nosh , z nichž každá má jejich vlastní implementace z halt, reboot, fasthalt, fastboot atd.

Soupravy nástrojů také rostly a měnily se. Nyní existuje příkaz poweroff, který není přítomen v operačních systémech 80. let, protože centrální procesorové jednotky na většině moderních strojů neměly způsob, jak ovládat své zdroje energie. Konkrétně sady nástrojů Linux získaly příkazy BSD; ale stejně jako nástroje pro kompatibilitu s BSD v systému UNIX System 5, nejedná se o přesné práce a věci byly z velké části vyrovnány.

Toto sloučení nás přivedlo k bodu, kde halt a shutdown jsou většinou stejné. Přesné detaily se však liší od sady nástrojů k sadě nástrojů a mechanika každé sady nástrojů se mírně liší.

Také nás to přivedlo na mírně trapné místo, kde se tato sada příkazů stala natolik pestrou s možnostmi kompatibility, že nyní umožňuje lidem dávat počítačům protichůdné pokyny jako _reboot --halt_ a _poweroff --reboot_, jak jsem poznamenal v manuální stránka pro příkazy halt, fasthalt, reboot, fastboot a poweroff. ☺

Sada nástrojů systemd

halt, reboot, poweroff, telinit a shutdown jsou všechny jeden program . Ve skutečnosti je to vlastní program systemctl systemd. Má několik analyzátorů příkazového řádku pro různé syntaxe příkazových řádků těchto příkazů, stejně jako jeho vlastní, ale poté z velké části interně zavede cesty do jedné kódové cesty. Není žádný rozdíl mezi použitím halt a jeho příkazových možností pro spuštění akce a použití shutdown a jeho příkazových možností pro spuštění stejné akce.

systemd nepovažuje záchranný režim (což je to, co lidé systemd přejmenovali režim jednoho uživatele ) jako stav vypnutí systému a není dosažitelný u žádného z těchto příkazů. Bez možnosti _shutdown now_ je stejné jako poweroff.

Další čtení:

BSD

BSD si do značné míry zachovávají sémantiku 80. let. halt a shutdown jsou tedy ve svých sadách nástrojů ekvivalentní nikoli . halt a reboot jsou jeden jediný program; a jsou stále nízké úrovně, okamžité a drastické. Zatímco shutdown a poweroff, také jeden jediný program, vykonávají všechny ohleduplné věci, jako je naplánované vypnutí, psaní wall zpráv, protokolování akcí, zakázání přihlášení atd.

V sadách nástrojů BSD shutdown/poweroff tradičně skončilo vyvoláním halt/reboot k uzákonění konečné změny stavu systému. (Často dnes nesprávné) obdržel moudrost, že „shutdown spustí halt/reboot“ ve skutečnosti stále platí pro NetBSD a OpenBSD. Ale u FreeBSD/TrueOS/DragonFlyBSD je to jen v případě, že je použita volba _-o_. Na těchto BSD oba těchto programů normálně stanoví konečnou změnu stavu systému zasláním různých signálů (INT, _USR1_ a _USR2_) ke zpracování # 1. init provádí all správu stavu systému v těchto systémech.

U všech z nich _shutdown now_ není ekvivalentní žádnému z halt, reboot nebo poweroff. Přechod na BSD režim jednoho uživatele , ze kterého lze přejít zpět na víceuživatelský režim .

Další čtení:

Nosh sada nástrojů

V sadě nástrojů pro správu systému nosh jsou halt, fasthalt, poweroff, fastpoweroff, reboot a fastboot. Jedná se o zpětně kompatibilní podložku, která se obvykle jednoduše připojí k shutdown, naproti přijaté moudrosti. Možnost _--force_ způsobí, že se místo toho řetězí na _system-control_.

Není tedy žádný rozdíl (chybí _--force_) mezi příkazem halt a příkazem shutdown (s ekvivalentní volbou) v této sadě nástrojů, protože tato sada příkazů „kompatibilita BSD/System 5“ je prostě tenká vrstva horní část shutdown.

Další čtení:

Upstart sada nástrojů

Stejně jako u nosh platí v upstart systému nástrojů pro správu systému opak přijaté moudrosti BSD. halt, reboot a poweroff jsou všechny programy, které se obvykle připojují k shutdown; pokud se nepoužije volba _--force_, díky níž se provede systémové volání reboot().

Takže opět není žádný rozdíl (chybí _--force_) mezi příkazem halt a příkazem shutdown (s ekvivalentní možností) v této sadě nástrojů. Opět platí, že bez možnosti _shutdown now_ (které žádný z halt, reboot nebo poweroff nemůže skončit vyvoláním, protože všechny možnosti nastavení) přivede systém do režim jednoho uživatele spíše než jej vypnout.

Další čtení:

Sada nástrojů pro systém Linux init + rc

Opět platí, že v této sadě nástrojů platí opak přijaté moudrosti BSD a halt a reboot jednoduše řetězí k shutdown - pokud systém již není ve vypnutém stavu nebo nezastaví "run-level", v tom případě tyto příkazy skutečně provedou konečnou změnu stavu systému. shutdown ve svých tahových řetězcích na init.

Takže opět není žádný rozdíl (pokud není systém již z velké části vypnut) mezi halt a shutdown, protože první z nich právě vyvolává druhý. A ano, znovu, bez možnosti _shutdown now_ (které žádný z halt, reboot nebo poweroff nemůže skončit vyvoláním, protože všechny možnosti nastavení) přivede systém do režim jednoho uživatele spíše než jej vypnout.

52
JdeBP

Mám podezření, že je to do jisté míry závislé na verzi UNIX/Linux, kterou používáte. Na Centos (a já expec další moderní Linux) zastavení volání vypnutí (za předpokladu, že nejste na runlevel 0 nebo 6), takže váš systém bude vypnut čistě. V systému Solaris 10 je zastavení brutálnější, pouze vyprázdní mezipaměti disku a vypne systém - nepokouší se spouštět žádné skripty ani vypínat smf zařízení.

11
user591

Pro ty, kteří používají AWS EC2: na AWS shutdownzastaví instance, když haltkončí.

3
dveim

V linuxu jsou „zastavení“ a „restartování“ aliasy příkazu k vypnutí - shutdown -h a shutdown -r. Vypnutí holého slova obvykle předpokládá -h.

0
Shadur