systemd
Toto je starší verze dokumentu!
SystemD
- základem je jednotka.. je několik typů, například:
- service - spouštění procesu (obdoba init skriptu)
- target - seznam jednotek service vedoucích k požadovanému cíli (obdoba run level)
- timer - časovač k jednotce service (obdoba cron)
- jednotka umí
- restartovat při pádu, sledovat stav
- omezovat zdroje jako cpu/paměť
- spouštění jednotek, až když jsou potřeba (on demantd loading)
- šablony - spouštění podobných služeb, např. getty@.service je šablona služby použivaná pro každé tty
- systemd umí vytvářet virtuální stroje
- tj. oddělení procesů, vlastní init
- výpis aktuálních strojů zobrazuje
machinectl
Příkaz systemctl
- příkaz pro řízení, výpis jednotek
- výpis všech typů:
systemctl --all --type help Available unit types: service socket busname target snapshot device mount automount swap timer path slice scope
- syntax:
systemctl PŘÍKAZ PATTERN, kde PATTERN je seznam jednotek ve tvaru JEDNOTKA[.TYP] - příkazy
is-active/is-enabled/is-failed- pro zjišťování stavu konkrétních jednotek můžeme použít příkaz- Tyto příkazy navíc vrací jako návratový kód nulu, pokud je podmínka splněna pro alespoň jednu jednotku.
- pokud se služba terpve spouští, vrací is-active nenulovou hodnotu (tj. není aktivní) a vypisuje „activating“
enable/disable- povolení či zakázání spouštění jednotkydaemon-reload- aktualizace konfiguračních souborů jednotek- aktualizují se všechny jednotky
- musí se volat po každé změně jakékoliv jednotky
cat- zobrazí obsah souboru s jednotkou
- umístění jednotek
- jednotky, které jsou instalovány z repozitářů, a tedy by je uživatel neměl měnit, sídlí v
- systémové
/usr/lib/systemd/system - uživatelské
/usr/lib/systemd/user
- vlastní jednotky jsou standardně
- systémové
/etc/systemd/system. - uživatelské
/etc/systemd/user- jsou přístupné pro všechny uživatele - osobní
~/.systemd/user- pro každého uživatele zvlášť.
Jednotka service
- skládá se ze tří částí
- Unit
- Service
- Install
- service
- Type - typ služby
- Simple - spustí se proces, který je hlídán. Ukončení procesu způsobí ukončení služby
- Fork - předpokládá se, že spouštěný proces se ukončí a spustí jiný. Aby byla služba považována za aktivní, musí běžet aspoň jeden child
- Oneshot - proces se spustí pouze jednorázově a skončí. Je možné nastavit, aby se služba tvářila po ukončení jako stále aktivní
- ExecStart - co zavolat pro spuštění služby
- ExecStop - co zavolat pro ukončení služby. Volá se i v případě, že služba je zabita nebo sama ukončena.
- DefaultTimeoutStartSec a DefaultTimeoutStopSec přenastavit výchozí časy, nebo pro každou jednotku zvlášť pomocí TimeoutStartSec a TimeoutStopSec.
- install
- WantedBy a RequiredBy, které říkají, kam se mají přidat závislosti při příkazu systemctl enable.
- Pokud chceme nějakou jednotku spouštět po startu, typicky nastavíme WantedBy=default.target, popř. WantedBy=multi-user.target.
- šablony - parametrické unity
- Pokud v systemd pracujeme s jednotkou obsahující zavináč (ve tvaru jmeno@parametr.typ), je hledán soubor jmeno@.typ a pro odlišení konkrétní instance se použije parametr.
Jednotka timer
- ukládá se do souboru
nazev.timer, musí k ní vždy existovat service jednotka - dva typy
- Realtime timers
- spouštění na základě skutečného času jako událost kalendáře (obdoba cron)
- definuje se parametrem
OnCalendar=
- Monotonic timers
- spouští se relativně k nějakému startovacímu bodu
- Například OnBootSec, OnActiveSec
- při uspání počítače se zastaví
- definuje se parametrem
OnTypeSec=
- seznam aktivních časovačů lze vypsat příkazem
systemctl list-timers NEXT LEFT LAST PASSED UNIT ACTIVATES Sun 2017-12-03 11:00:59 CET 9min left Sun 2017-12-03 10:01:46 CET 49min ago anacron.timer anacron.service Sun 2017-12-03 11:09:00 CET 17min left Sun 2017-12-03 10:39:04 CET 12min ago phpsessionclean.timer phpsessionclean.service Sun 2017-12-03 22:00:00 CET 11h left Sun 2017-12-03 10:17:21 CET 34min ago fstrim.timer fstrim.service Mon 2017-12-04 01:02:19 CET 14h left Sun 2017-12-03 10:17:17 CET 34min ago apt-daily.timer apt-daily.service Mon 2017-12-04 06:04:13 CET 19h left Sun 2017-12-03 06:59:46 CET 3h 51min ago apt-daily-upgrade.timer apt-daily-upgrade.service Mon 2017-12-04 06:47:32 CET 19h left Sun 2017-12-03 06:47:32 CET 4h 4min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
- Příklad s fstrim
- pravidelné spouštění příkazu každou neděli v deset hodin
systemctl cat fstrim.service [Unit] Description=Discard unused blocks [Service] Type=oneshot ExecStart=/sbin/fstrim -a
systemctl cat fstrim.timer [Unit] Description=Discard unused blocks once a week Documentation=man:fstrim [Timer] #OnCalendar=weekly OnCalendar=Sun, 22:00 AccuracySec=1h Persistent=true [Install] WantedBy=timers.target
Zdroje
-
- návod pro začátečníky tak nějak
-
- kompletní detailní dokumentace k systemd
- zajímavé podstránky
-
- volby pro spouštění příkazů přes ExecStop, ExecStart, Exec*…
-
- volby pro jednotky typu service
-
- volby pro jednotku
-
systemd.1512294916.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
