Čtení „Jaký je rozdíl mezi příkazy Halt a Shutdown? , Obecně mám představu, co dělá příkaz shutdown, s volbami -h/-r nebo bez nich.
Příkaz „halt“ provede vypnutí systému pro spuštění úrovně 0
systému.Příkaz „shutdown“ provede vypnutí systému do úrovně běhu
1 bez příkazu -h nebo -r.
Co příkaz „poweroff“ přejde do úrovně běhu 0 nebo 1?
Je toto jediný hlavní rozdíl mezi těmito třemi příkazy?
Přijatá odpověď:
A teď odpověď systemd.
Podle štítku ve vaší otázce používáte Red Hat Enterprise Linux. Od verze 7 se používá systemd. Žádná z ostatních odpovědí není správná pro svět systemd; dokonce ani některé z předpokladů ve vaší otázce.
- Zapomeňte na úrovně běhu; existují, ale pouze jako podložky kompatibility. Dokumentace systemd uvádí, že koncept je „zastaralý“. Pokud se tyto věci začínáte učit na operačním systému systemd, nezačínejte tam.
- Zapomeňte na manuálovou stránku, kterou citoval marcelm; vůbec nepochází ze správné sady nástrojů a je to popis příkazu jiné sady nástrojů, nesprávný pro systemd. Je to ten pro
haltpříkaz z van Smoorenburg „System 5“initslužby. - Ignorujte příkazy
/sbin/haltje symbolický odkaz na/sbin/reboot; to není pravda se systemd. Neexistuje žádný samostatnýrebootprogram vůbec. - Ignorujte příkazy, které
haltneborebootvyvolatshutdownprogram s argumenty příkazového řádku; nejsou také pravdivé pro systemd. Neexistuje žádné samostatnéshutdownprogram vůbec.
Každá sada nástrojů pro správu systému má svou verzi těchto nástrojů. systemd, upstart, nosh, van Smoorenburg init a BSD init všechny mají svůj vlastní halt , poweroff , a tak dále. Na každém se jejich mechanika mírně liší. Stejně tak jejich manuálové stránky.
V sadě nástrojů systemd halt ,poweroff ,reboot , telinit a shutdown jsou vše symbolické odkazy na /bin/systemctl . Jsou to všichni shims zpětné kompatibility, což jsou jednoduše zkratky pro vyvolání primárního rozhraní příkazového řádku systemd:systemctl . Všechny mapují (a ve skutečnosti jsou) ke stejnému jedinému program. (Podle konvence mu shell říká, kterým jménem byl vyvolán.)
cíle, nikoli úrovně běhu
Většina z těchto příkazů jsou zkratky pro sdělování systemd pomocí systemctl , izolovat konkrétní cíl . Izolace je vysvětlena v systemctl manuálová stránka (q.v.), ale může být pro účely této odpovědi chápána jako spuštění cíle a zastavení ostatních. Standardní cíle používané v systemd jsou uvedeny na systemd.special (8) manuálová stránka.
Diagramy při bootup (7) manuálová stránka v sadě nástrojů systemd, zejména ta poslední, ukazuje, že existují tři „konečné“ cíle, které jsou zde relevantní:
halt.target— Jakmile systém dosáhne stavu úplné izolace tohoto cíle, zavoláreboot(RB_HALT_SYSTEM)systémové volání. Jádro se pokusilo vstoupit do programu pro monitorování ROM nebo jednoduše zastavilo CPU (pomocí jakéhokoli vhodného mechanismu).reboot.target— Jakmile systém dosáhne stavu úplné izolace tohoto cíle, zavoláreboot(RB_AUTOBOOT)systémové volání (nebo ekvivalent s příkazovým řádkem magic). Jádro se pokusí spustit restart.poweroff.target— Jakmile systém dosáhne stavu úplné izolace tohoto cíle, zavoláreboot(RB_POWER_OFF)systémové volání. Pokud to bude možné, jádro se pokusí odpojit napájení systému.
Tyto jsou věci, na které byste měli myslet v konečném stavu systému, nikoli na spouštění úrovní. Všimněte si z diagramu, že samotný cílový systém systemd kóduje věci, které jsou v jiných systémech spíše implicitní než explicitní:jako je představa, že každý z těchto konečných cílů zahrnuje shutdown.target cíl, takže jeden popisuje služby, které musí být zastaveny před vypnutím tím, že jsou v konfliktu shutdown.target cíl.
systemctl se pokusí odeslat požadavky na systemd-logind když volající uživatel není superuživatel. Také předává zpožděná vypnutí do systemd-shutdownd . A některé zkratky spouštějí wall oznámení. Pomineme-li tyto složitosti, které by tuto odpověď několikrát prodloužily, za předpokladu, že jste aktuálně superuživatel a nepožadujete naplánovanou akci:
systemctl isolate halt.targetmá zkratky:shutdown -H nowsystemctl halt- prostý bez ozdob
halt
systemctl isolate reboot.targetmá zkratky:shutdown -r nowtelinit 6systemctl reboot- prostý bez ozdob
reboot
systemctl isolate poweroff.targetmá zkratky:shutdown -P nowtelinit 0shutdown nowsystemctl poweroff- prostý bez ozdob
shutdown
systemctl isolate rescue.targetmá zkratky:telinit 1systemctl rescue
systemctl isolate multi-user.targetmá zkratky:telinit 2telinit 3telinit 4
systemctl isolate graphical.targetmá zkratku:telinit 5
Po analýze různých různých syntaxí příkazového řádku všechny nakonec skončí ve stejných cestách kódu uvnitř systemctl program.
Poznámky:
- Tradiční chování bez možnosti
shutdown nowdošlo k přepnutí do režimu pro jednoho uživatele . To není případ systemd.rescue.target— režim pro jednoho uživatele byl přejmenován na režim záchrany v systemd — není dosažitelné pomocíshutdownpříkaz. telinitskutečně zcela ignorujte všechny tytorunlevelN.targetadefault.targetsymbolické odkazy v souborovém systému, které popisují manuálové stránky. Výše uvedená mapování jsou pevně zapojena dosystemctlprogram v tabulce.- systemd nemá žádnou představu o aktuální úrovni běhu . Činnost těchto příkazů není podmíněna žádným „pokud jste na úrovni běhu N “.
--forcemožnosthalt,rebootapoweroffpříkazy je stejné jako říkat--force --forcenasystemctl halt,systemctl rebootasystemctl poweroffpříkazy. Tím se vytvořísystemctlzkuste zavolatreboot()přímo. Normálně se pouze snaží izolovat cíle.telinitnení totéž jakoinit. Jsou to různé programy ve světě systemd, ten druhý je jiný název prosystemdprogram, nikoli prosystemctlprogram.systemdprogram není nutně zkompilován s van Smoorenburgovou kompatibilitou a na některých operačních systémech systemd si stěžuje na nesprávné vyvolání, pokud se pokusíteinit N.
Další čtení
- Existují nějaké dobré důvody pro zastavení systému bez přerušení napájení?
- Proč má `init 0` za následek “Excess Arguments” na instalaci Arch?
- Stephen Wadeley (2014). "8. Správa služeb pomocí systemd” Příručka správce systému Red Hat Enterprise Linux 7 . Red Hat.
- Lennart Poettering (2013-10-07).
systemctl. systémové manuálové stránky. freedesktop.org. - Lennart Poettering (2013-10-07).
systemd.special. systémové manuálové stránky. freedesktop.org. - Lennart Poettering (2013-10-07).
bootup. systémové manuálové stránky. freedesktop.org. - Jonathan de Boyne Pollard (2018).
init. průvodce nosh . Software.