Uživatelské nástroje

Nástroje pro tento web


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í jednotky
    • daemon-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

systemd.1512294981.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki