Systemd a unit súbory

04.05.2015 | 00:11 | Central Nexus | borg

Menší zápisok o unit súboroch pre systemd služby.

Syntax unit súborov pre systemd je podobná súbrom ini z Windowsu.

Typy služieb:

Typ služby sa uvádza v kľúči Type v sekcii [Service]:

Type=simple : proces sa nesmie forknúť, služba sa spustí okamžite a nesmú byť na nej závislé ostatné služby.

Type=forking : systemd považuje službu za spustenú potom čo sa proces fork-ol a rodič skončil. Tento typ je použiteľný pre klasické démony, ale je nutné špecifikovať PIDFile=

Type=oneshot : použiteľné pre skripty (ukončia sa po vykonaní svojej práce) Type=notify : rovnaká ako Type=simple, služba musí poslať signál pre systemd, že je pripravená

Type=dbus : služba je pripravená ak sa BusName objaví v Dbus-e.

Type=idle : podobná typu simple. Spustenie služby je odložené pokiaľ všetky ostatné služby nie sú spustené. Unit súbory pre služby, ktoré má systemd spustiť sa nachádzajú na dvoch miestach: /usr/lib/systemd/system (unit súbory pre nainštalované balíky) /etc/systemd/system (unit súbory dodané adminom)

Editácia

Ak chceme upraviť nejaký unit súbor pre už nainštalovaný balíček, môžeme tak urobiť dvoma spôsobmi.

Vytvorenie nového unit súboru v /etc/systemd/system

Ak chceme prepísať celý unit súbor alebo len jeho časť, tak vytvoríme nový súbor v /etc/systemd/system touch servicename.service Potom nám už stačí zeditovať takýto súbor príkazom:

systemctl edit –full servicename

systemctl sa nás spýta, či chceme prepísať náš novo vytvorený prázdny súbor prepísať unit súborom služy z /usr/lib/systemd/sytem/servicename.service. Potvrdíme, že áno a tým pádom sa nám otvorí unit súbor službý v textovom editore, kde ho môžeme upraviť.

Prepísanie volieb v unit súbore

Ak chceme prepísať, doplniť len nejakú voľbu, nemusíme vytvárať nový unit súbor. Stači vytvoriť len conf súbor k danej službe, ktorý zabezpečí prepísanie nami požadovanej voľby. V /etc/systemd/system vytvoríme adresár servicename.d, kde vytvoríme conf súbor alebo súbory. Najjednoduchšie je opäť použiť systemctl, ktorý všetky potrebné kroky urobí za nás. Teda vytvorí adresár servicename.service.d a otvorí editor s novovytvoreným súborom, ktorý má názov override.conf. Sem pridáme čo potrebujeme a uložíme.

systemctl edit servicename

Potom čo sme urobili zmeny, je nutné oznámiť systemd-u, že nastali zmeny v unit súboroch

systemctl deamon-reload

Ak sme použivali systemctl edit, tak krok s deamon-reload môžeme vynechať, pretože to za nás urobí automaticky systemd.

    • RE: Systemd a unit súbory 04.05.2015 | 11:27
      Avatar Andrej Lacho Debian, CentOS ...  Administrátor

      Pekné. Mňa by ale zaujímalo či keď mám vytvorenú službu v /etc/init.d/ pre nejakú aplikáciu tak či to bude fungovať aj pre systéme so systemd.

      Resp. ako/kde vytvorím novú službu v systemd?

      • RE: Systemd a unit súbory 04.05.2015 | 11:39
        Avatar borg Fedora  Administrátor

        init.d je ignorovany (okrem tusim skriptov, ktore maju prefix boot).

        ak sa mi bude chciet urobim vecer priklad ako vytvorit novy unit file.

        • RE: Systemd a unit súbory 04.05.2015 | 12:13
          Avatar Andrej Lacho Debian, CentOS ...  Administrátor

          no mohol by si veru :)