Systemd — Správa služieb a systému
Systemd je init systém a správca služieb v modernom Linuxe. Ovláda štart systému, spravuje služby, logy, timery a závislosti medzi komponentmi. Ak pracuješ s Linuxom, pracuješ so systemd.
Ako funguje systemd?
Systemd pracuje s unit files — konfiguračnými súbormi, ktoré popisujú služby, mounty, timery a ďalšie systémové komponenty. Units sa nachádzajú v:
/etc/systemd/system/— vlastné a override units (najvyššia priorita)/lib/systemd/system/— units z balíčkov/run/systemd/system/— runtime units
Správa služieb (systemctl)
# Základné operácie
systemctl start nginx # spustiť službu
systemctl stop nginx # zastaviť
systemctl restart nginx # reštartovať
systemctl reload nginx # reload konfigurácie bez reštartu
systemctl status nginx # stav a posledné logy
# Automatický štart
systemctl enable nginx # zapnúť pri boote
systemctl disable nginx # vypnúť pri boote
systemctl enable --now nginx # zapnúť a zároveň spustiť
# Zoznam služieb
systemctl list-units --type=service
systemctl list-units --failed
Vlastný unit file
Vytvorenie služby pre vlastnú aplikáciu — /etc/systemd/system/myapp.service:
[Unit]
Description=My Application
After=network.target postgresql.service
Wants=postgresql.service
[Service]
Type=simple
User=deploy
Group=deploy
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/bin/server --port 8080
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5
Environment=NODE_ENV=production
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
# Po vytvorení/zmene unit file
systemctl daemon-reload
systemctl enable --now myapp
Journalctl — Centrálne logy
Systemd journal zbiera logy zo všetkých služieb:
# Logy konkrétnej služby
journalctl -u nginx
# Sledovanie v reálnom čase
journalctl -u myapp -f
# Posledných 100 riadkov
journalctl -u myapp -n 100
# Logy od určitého času
journalctl -u myapp --since "2026-02-27 10:00" --until "2026-02-27 12:00"
# Logy podľa priority
journalctl -p err # len chyby a horšie
# Veľkosť journal
journalctl --disk-usage
journalctl --vacuum-size=500M
Timers — Náhrada za cron
Systemd timers sú modernejšia alternatíva k cronu:
# /etc/systemd/system/backup.timer
[Unit]
Description=Daily backup timer
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
# Zoznam timerov
systemctl list-timers --all
# Aktivácia
systemctl enable --now backup.timer
Dependencies a poradie štartu
After=— spusti sa až po danej službeRequires=— závislosť, bez nej zlyháWants=— slabá závislosť, pokračuje aj keď zlyháBefore=— spusti sa pred danou službou
Best Practices
- Vždy
Restart=on-failure— služby by mali prežiť pád - Používaj
systemctl edit— vytvára override bez úpravy pôvodného unit file - Loguj cez stdout/stderr — systemd journal to zachytí automaticky
- Nastavuj limity —
LimitNOFILE,MemoryMax,CPUQuota - Timers > cron — lepší logging, dependencies, persistent catch-up
daemon-reloadpo každej zmene — inak systemd nevidí nové unit files
Systemd je mocný nástroj. Pochop unit files, nauč sa journalctl a tvoja správa služieb bude profesionálna.