Ciele
-
Po tejto prednáške budeš vedieť:
- analyzovať bežiace procesy a ich využitie zdrojov nad rámec základného prehľadu
- vytvoriť a spravovať vlastnú systemd jednotku (service unit)
- naplánovať pravidelné úlohy pomocou cron a systemd timers
Obsah
Procesy nad rámec základov
Základné príkazy na výpis procesov (ps, top) sa predpokladajú. Tento týždeň ideme hlbšie: ps aux --sort=-%cpu na zoradenie podľa záťaže, htop pre interaktívny prehľad, kill/killall/pkill na rôznych úrovniach (signály SIGTERM vs. SIGKILL a rozdiel v tom, ako sa proces správa), a strom procesov (pstree) na pochopenie rodič–dieťa vzťahov (napr. prečo „zombie“ proces zostáva v systéme).
Systemd jednotky
Systemd je dnes štandardný init systém väčšiny distribúcií. Vlastná služba sa definuje ako .service súbor v /etc/systemd/system/ s časťami [Unit] (popis, závislosti), [Service] (príkaz na spustenie, typ – simple/forking/oneshot, správanie pri páde – Restart=on-failure) a [Install] (kedy sa má služba spustiť automaticky, napr. WantedBy=multi-user.target). Po vytvorení sa jednotka aktivuje systemctl daemon-reload, systemctl enable --now <jednotka>.
Plánovanie úloh
cron je klasický nástroj na pravidelné spúšťanie úloh (crontab -e, syntax minúta hodina deň mesiac deň_v_týždni príkaz). Systemd timers sú modernejšia alternatíva – .timer jednotka spúšťa priradenú .service jednotku podľa harmonogramu, s výhodou lepšieho logovania (cez journalctl) a možnosti spustiť zameškanú úlohu po reštarte (Persistent=true).
Praktické príklady a demonštrácie
- Ukážka vytvorenia jednoduchej systemd
.servicejednotky, ktorá spustí skript, a jej porovnanie s ekvivalentným riešením cezcron @reboot. - Rozbor výstupu
pstreea identifikácia „zombie“ procesu.
Čo si zapamätaj
- Ako vytvoriť a aktivovať vlastnú systemd
.servicejednotku. - Rozdiel medzi cron a systemd timers.
- Rozdiel medzi SIGTERM a SIGKILL.
Zdroje
- man systemd.service, man crontab, man systemd.timer.