Jak správci systémů vědí, na moderních počítačích se toho děje hodně. Aplikace běží na pozadí, automatické události čekají na spuštění v určitou dobu, zapisují se protokolové soubory, doručují se stavové zprávy. Tradičně byly tyto nesourodé procesy řízeny a monitorovány pomocí souboru unixových nástrojů s velkým efektem a vysokou účinností. Moderní počítače jsou však rozmanité, s místními službami běžícími vedle kontejnerových aplikací, snadným přístupem ke cloudům a clusterům, na kterých běží, procesy v reálném čase a více dat ke zpracování než kdy jindy.
Jednotná metoda jejich správy je očekáváním pro uživatele a užitečným luxusem pro zaneprázdněné správce systému. Pro tento netriviální úkol systémový démon neboli systemd , byl vyvinut a rychle přijat všemi hlavními distribucemi Linuxu.
Více o sysadmins
- Povolit blog Sysadmin
- Automatizovaný podnik:průvodce řízením IT pomocí automatizace
- eKniha:Ansible Automation for SysAdmins
- Příběhy z terénu:Průvodce správcem systému pro automatizaci IT
- eKniha:Průvodce Kubernetes pro SRE a správce systému
- Nejnovější články správce systému
Systemd samozřejmě není jediný způsob, jak spravovat systém Linux. Existuje mnoho alternativních init systémů, včetně sysvinit, OpenRC, runit, s6 a dokonce BusyBox, ale systemd zachází s Linuxem jako s jednotným souborem dat, s nímž je možné konzistentně manipulovat a dotazovat se pomocí robustních nástrojů. Pro zaneprázdněného správce systémů a mnoho uživatelů je rychlost a snadnost systemd důležitou vlastností. Zde je pět důvodů.
Správa spouštění
Spuštění počítače se systémem Linux může být překvapivě vzácná událost, chcete-li. Samozřejmě ve světě serverů se doba provozuschopnosti často počítá na roky spíše než měsíce nebo týdny. Notebooky a stolní počítače mají tendenci se vypínat a spouštět poměrně často, i když i u nich je pravděpodobné, že budou pozastaveny nebo hibernovány, jako že budou vypnuty. V každém případě může čas od poslední události spuštění sloužit jako určitý druh správce relací pro kontrolu stavu počítače. Je to užitečný způsob, jak omezit, na jaké údaje se díváte při monitorování systému nebo diagnostice problémů.
V případě, že si pravděpodobně nepamatujete, kdy jste naposledy spouštěli počítač, můžete vypsat spouštěcí relace pomocí logovacího nástroje systemd journalctl
:
$ journalctl --list-boots
-42 7fe7c3... Fri 2020-12-04 05:13:59 - Wed 2020-12-16 16:01:23
-41 332e99... Wed 2020-12-16 20:07:39 - Fri 2020-12-18 22:08:13
[...]
-1 e0fe5f... Mon 2021-03-29 20:47:46 - Mon 2021-03-29 21:59:29
0 37fbe4... Tue 2021-03-30 04:46:13 - Tue 2021-03-30 10:42:08
Nejnovější spouštěcí relace se zobrazí ve spodní části seznamu, takže můžete výstup převést na tail
pouze pro nejnovější boty.
Čísla vlevo (v tomto příkladu 42, 41, 1 a 0) jsou indexová čísla pro každou relaci spouštění. Jinými slovy, chcete-li zobrazit protokoly pouze pro určitou spouštěcí relaci, můžete jako referenci použít její indexové číslo.
Zaznamenat recenze
Prohlížení protokolů je důležitou metodou extrapolace informací o vašem systému. Protokoly poskytují historii většiny aktivit, které váš počítač provádí bez vašeho přímého dohledu. Můžete vidět, kdy byly spuštěny služby, kdy se spouštěly časově omezené úlohy, jaké služby běží na pozadí, které aktivity se nezdařily a další. Jedním z nejběžnějších počátečních kroků při odstraňování problémů je kontrola protokolů, což lze snadno provést pomocí journalctl
:
$ journalctl --pager-end
--pager-end
(nebo -e
zkráceně) volba spustí zobrazení protokolů na konci journalctl
výstup, takže se musíte posunout nahoru, abyste viděli události, které se staly dříve.
Systemd udržuje "katalog" chyb a zpráv plný záznamů chyb, možných řešení, odkazů na fóra podpory a dokumentace pro vývojáře. To může poskytnout důležitý kontext události protokolu, která by jinak mohla být matoucím zábleskem v moři zpráv, nebo v horším případě by mohla zůstat zcela bez povšimnutí. Chcete-li integrovat chybové zprávy s vysvětlujícím textem, můžete použít --catalog
(nebo -x
zkráceně) možnost:
$ journalctl --pager-end --catalog
Chcete-li dále omezit výstup protokolu, který musíte procházet, můžete určit, pro kterou spouštěcí relaci chcete zobrazit protokoly. Protože je každá spouštěcí relace indexována, můžete určit určité relace pomocí --boot
a zobrazit pouze protokoly, které se na ni vztahují:
$ journalctl --pager-end --catalog --boot 42
Můžete také zobrazit protokoly pro konkrétní jednotku systemd. Chcete-li například vyřešit problém se službou Secure Shell (SSH), můžete zadat --unit sshd
zobrazit pouze protokoly, které se vztahují k sshd
démon:
$ journalctl --pager-end \
--catalog --boot 42 \
--unit sshd
Správa služeb
Prvním úkolem systemd je nabootovat váš počítač a obvykle to dělá rychle, efektivně a efektivně. Úkolem, který však není nikdy dokončen, je správa služeb. Podle návrhu systemd zajišťuje, že služby, které chcete spouštět, se během vaší relace skutečně spustí a budou pokračovat. To je pěkně robustní, protože teoreticky i havarovanou službu lze restartovat bez vašeho zásahu.
Vaše rozhraní, které pomáhá systemd spravovat služby, je systemctl
příkaz. Pomocí něj můžete zobrazit soubory jednotek, které definují službu:
$ systemctl cat sshd
# /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.target
Wants=sshd-keygen.target
[Service]
Type=notify
EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config
EnvironmentFile=-/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
Většina souborů jednotek existuje v /usr/lib/systemd/system/
ale stejně jako u mnoha důležitých konfigurací se doporučuje upravit je místními změnami. I na to existuje rozhraní:
$ systemctl edit sshd
Můžete zjistit, zda je služba aktuálně aktivní:
$ systemctl is-active sshd
active
$ systemctl is-active foo
inactive
Podobně můžete pomocí is-failed
zjistit, zda služba selhala .
Spouštění a zastavování služeb je pěkně intuitivní:
$ systemctl stop sshd
$ systemctl start sshd
A povolení spuštění služby při spouštění je jednoduché:
$ systemctl enable sshd
Přidejte --now
možnost povolit spuštění služby při spouštění nebo její spuštění pro vaši aktuální relaci.
Časovače
Kdysi dávno, když jste chtěli automatizovat úlohu v Linuxu, kanonický nástroj pro tuto úlohu byl cron
. Stále je zde místo pro příkaz cron, ale existují také některé přesvědčivé alternativy. Například anacron
command je všestranný systém podobný cronu, který dokáže spouštět úlohy, které by jinak byly během výpadku zmeškány.
Naplánované události jsou o něco víc než služby aktivované v konkrétní čas, takže systemd spravuje funkci podobnou cron, která se nazývá časovače. Aktivní časovače můžete vypsat:
$ systemctl list-timers
NEXT LEFT
Tue 2021-03-30 12:37:54 NZDT 16min left [...]
Wed 2021-03-31 00:00:00 NZDT 11h left [...]
Wed 2021-03-31 06:42:02 NZDT 18h left [...]
3 timers listed.
Pass --all to see loaded but inactive timers, too.
Časovač můžete povolit stejným způsobem jako službu:
$ systemctl enable myMonitor.timer
Cíle
Cíle jsou poslední hlavní součástí matice systemd. Cíl je definován souborem jednotek, stejně jako služby a časovače. Cíle lze také spustit a povolit stejným způsobem. Cíle jsou jedinečné v tom, že seskupují jiné soubory jednotek libovolně významným způsobem. Můžete například chtít zavést systém z textové konzole namísto grafické plochy, takže multi-user
cíl existuje. Nicméně multi-user
cíl je pouze graphical
cíl bez souborů desktopové jednotky jako závislostí.
Stručně řečeno, cíle představují snadný způsob, jak shromažďovat služby, časovače a dokonce i další cíle dohromady, aby představovaly zamýšlený stav pro váš počítač.
Ve skutečnosti v rámci systemd je restart, vypnutí nebo vypnutí jen dalším cílem.
Všechny dostupné cíle můžete vypsat pomocí list-unit-files
možnost, omezte jej pomocí --type
možnost nastavena na target
:
$ systemctl list-unit-files --type target
Převzetí kontroly pomocí systemd
Moderní Linux používá systemd pro správu služeb a introspekci protokolů. Poskytuje vše od osobních linuxových systémů po podnikové servery s moderním mechanismem pro monitorování a snadnou údržbu. Čím více jej budete používat, tím více se systemd stane pohodlně předvídatelným a intuitivním a tím více zjistíte, jak jsou různé části vašeho systému propojeny.
Chcete-li se lépe seznámit se systémem systemd, musíte jej používat. A abyste si s jeho používáním zvykli, stáhněte si náš cheat sheet a často se na něj dívejte.