GNU/Linux >> Znalost Linux >  >> Linux

5 důvodů, proč správci systému milují systemd

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.


Linux
  1. 10 důvodů, proč milovat Linux v roce 2021

  2. 5 důvodů, proč miluji kódování na Linuxu

  3. Negrafické spouštění pomocí Systemd?

  1. Jak ladit proces spouštění systemd v CentOS/RHEL 7 a 8

  2. pomocí časovačů systemd místo cronu

  3. Závislosti Systemd a pořadí spouštění

  1. Linux sysadmins:6 důvodů, proč byste měli psát technické články

  2. Jak na to:Správa systémových protokolů pomocí Journalctl

  3. Změna velikosti spouštěcího oddílu