skoleni:sprava_uzivatelu_a_sluzeb

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

skoleni:sprava_uzivatelu_a_sluzeb [2019/04/22 14:09] – [Služby] eskultetyskoleni:sprava_uzivatelu_a_sluzeb [2022/11/14 12:26] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1244: Řádek 1244:
 <code> <code>
 (root)$ systemctl start mydate (root)$ systemctl start mydate
 +(root)$ systemctl status mydate
 +● mydate.service - Ukazem datum
 +   Loaded: loaded (/etc/systemd/system/mydate.service; disabled; vendor preset: disabled)
 +  Drop-In: /etc/systemd/system/mydate.service.d
 +           └─override.conf
 +   Active: inactive (dead)
 +
 (root)$ journalctl -e -u mydate (root)$ journalctl -e -u mydate
 Apr 22 14:01:27 skoleni systemd[1]: Starting Ukazem datum... Apr 22 14:01:27 skoleni systemd[1]: Starting Ukazem datum...
 Apr 22 14:01:27 skoleni date[8755]: Mon Apr 22 14:01:27 CEST 2019 Apr 22 14:01:27 skoleni date[8755]: Mon Apr 22 14:01:27 CEST 2019
 Apr 22 14:01:27 skoleni systemd[1]: Started Ukazem datum. Apr 22 14:01:27 skoleni systemd[1]: Started Ukazem datum.
 +</code>
 +
 +Zároveň vidíme, že tým, že je naša služba nastavená ako //oneshot//, tak ihneď prejde do stavu **inactive**. Ak by sme chceli zachovať stav **active** aj keď proces už skončil, môžeme tak učiniť parametrom ''RemainAfterExit''.
 +<code>
 +(root)$ systemctl cat mydate.service
 +
 +# /etc/systemd/system/mydate.service
 +[Unit]
 +Description=Ukazem datum
 +
 +[Service]
 +Type=oneshot
 +ExecStart=date
 +
 +# /etc/systemd/system/mydate.service.d/override.conf
 +[Service]
 +RemainAfterExit=yes
 +</code>
 +
 +Ďalej by sme chceli, aby sa naša služba púšťala vždy po štarte systému, tak ju skúsme povoliť, ako sme si ukazovali vyššie
 +
 +<code>
 +(root)$ systemctl enable myservice
 +The unit files have no installation config (WantedBy, RequiredBy, Also, Alias
 +settings in the [Install] section, and DefaultInstance for template units).
 +This means they are not meant to be enabled using systemctl.
 +Possible reasons for having this kind of units are:
 +1) A unit may be statically enabled by being symlinked from another unit's
 +   .wants/ or .requires/ directory.
 +2) A unit's purpose may be to act as a helper for some other unit which has
 +   a requirement dependency on it.
 +3) A unit may be started when needed via activation (socket, path, timer,
 +   D-Bus, udev, scripted systemctl call, ...).
 +4) In case of template units, the unit is meant to be enabled with some
 +   instance name specified.
 +</code>
 +
 +Systemd nám hneď povie, že s našou konfiguráciou nie je niečo vporiadku. Chýba nám tam totiž sekcia ''[Install]'', ktorá je pre systemd kľúčová, pretože mu vraví, kedy našu službu môže spustiť (služby totiž môžu mať na sebe závislosti). Tu sa dostávame k téme **//targets//**.
 +
 +====Systemd target====
 +Systemd **target** je špeciálny druh jednotky, ktorý zoskupuje iné jednotky a vytvára tak určitý synchronizačný //checkpoint// pre služby, ktoré majú definované závislosti, napr. nemá význam spúšťat webserver, keď nemáme spustený **NetworkManager** a nemáme nakonfigurovanú sieť. Takáto závislosť sa potom prejaví v konfigurácii ''httpd'' nasledovne
 +<code>
 +$ systemctl cat httpd
 +[Unit]
 +...
 +After=network.target remote-fs.target nss-lookup.target httpd-init.service
 +...
 +</code>
 +
 +Takýchto synchronizačných bodov je v systemd niekoľko a tie úplne najzákladnejšie korešpondujú s operačnými režimami sytému **SysV**, známymi ako //**runlevels**//. Hoci systemd rozoznáva aj //runlevels//, správame sa k nim jednotne ako aj k iným //targets//. Mapovanie medzi starými //runlevels// a systemd je pekne vidno [[https://wiki.archlinux.org/index.php/systemd#Mapping_between_SysV_runlevels_and_systemd_targets|tu]].\\
 +Vráťme sa teda k našej službe a nastavme ju ako službu spustiteľnú vrámci ''multi-user.target'' a službu povoľme:
 +
 +<code>
 +(root)$ systemctl cat mydate
 +...
 +# /etc/systemd/system/mydate.service.d/override.conf
 +[Service]
 +RemainAfterExit=yes
 +
 +[Install]
 +WantedBy=multi-user.target
 +
 +(root)$ systemctl enable mydate
 +Created symlink /etc/systemd/system/multi-user.target.wants/mydate.service → /etc/systemd/system/mydate.service.
 +(root)$ systemctl status mydate
 +● mydate.service - Ukazem datum
 +   Loaded: loaded (/etc/systemd/system/mydate.service; enabled; vendor preset: disabled)
 +...
 </code> </code>
  
 ===Manuálové stránky=== ===Manuálové stránky===
-  * ''systemctl daemon-reload''+  * ''systemctl'' (1) 
 +  * ''systemd.target'' (5)
  • Poslední úprava: 2022/11/14 11:12
  • (upraveno mimo DokuWiki)