Systemd a jednoduchá služba

16.05.2015 | 00:39 | Central Nexus | borg

Ako vytvoriť unit súbor pre service, ktorá nám zabezpečí spustenie nejakého nášho skriptu po štarte systému.

Syntax unit súboru je inšpirovaná z XDG Desktop Entry Specification, .destkop súbor, ktorá sa podobá ini súborom z MS Windows. Podrobné informácie možno nájsť v manuálovej stranke systemd.unit.

Predstavme si, že máme nejaký skript, ktorý chceme aby sa spúšťal automaticky po štarte. Napríklad skript, ktorý obsahuje pravidlá pre iptables. Obsah neriešime, kľudne to môže byť ľubovolný skript.

Na toto nám poslúži service zo systemd. Service unit súbor obsahuje niekoľko sekcií a to všeobecné sekcie [Unit] a [Install] a sekcie špecifické pre daný unit súbor (služba, zariadenie…). Každa sekcia je popísana podrobne v manuálovej stránke. Napríklad pre náš príklad potrebujeme tri sekcie: [Unit], [Install] a [Service]. Prvé dve sú všeobecné a sú popísané v manuálovej stránke systemd.unit. Tretia sekcia popisuje našu službu a je popísaná v manuálovej stránke systemd.service.

Takže viac info v:

man 5 systemd.unit

man 5 systemd.service

Náš skript sa volá serverfw.sh a je uložený v /usr/lib/systemd/scripts (prípadne inde). Vytvoríme si service súbor pre tento skript, pomenujme ho serverfw.service s týmto obsahom:

[Unit]

Description=Nahra pravidla pre iptables   

[Service]

Type=oneshot

RemainAfterExit=yes

ExecStart=/usr/lib/systemd/scripts/serverfw.sh

[Install]

WantedBy=network.target

Súbor uložíme do /etc/systemd/system a zabezpečíme aby sa po reštarte naša služba aktivovala a teda spustila náš skript:

systemctl enable /etc/systemd/system/serverfw.service

Jednolivé kľúče v sekciách sú takmer samovysvelujúce.

Description je nejaký opis našej služby.

Type určuje typ služby, v našom prípade je vhodný typ oneshot. RemainAfterExit určuje či bude systemd považovať službu za aktívnu ak proces (v našom prípade skript) sa ukončí (teda nejde o démona).

ExecStart je cesta k nášmu skriptu.

WantedBy definuje, že naša služba sa aktivuje potom, prípadne súčane s nastavením siete.

Užitočné voľby sú ešte napr. ExecReload, ExecStop na prípadné znovunahratie pravidiel pre iptables, pripadné ich odstránenie.

Viac info možno nájsť v manuálových stránkach pre systemd.

    • RE: Systemd a jednoduchá služba 16.05.2015 | 16:31
      Avatar Andrej Lacho Debian, CentOS obcas Kubuntu  Administrátor

      Fajííín. Nieje to až také strašné.

      Tu:

      systemctl enable /etc/systemd/system/serverfw.service.

      Asi nemá byť bodka na konci, či?

      Linux without fckin systemd
      • RE: Systemd a jednoduchá služba 16.05.2015 | 18:52
        Avatar borg Arch, Debian jessie  Administrátor

        dik.

        mas pravdu, bodka tam nema byt. fixol som to.