Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| skoleni:sprava_uzivatelu_a_sluzeb [2019/04/21 18:15] – [Služby] zakladne info k sluzbam aj s prikladmi eskultety | skoleni:sprava_uzivatelu_a_sluzeb [2022/11/14 11:26] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 1051: | Řádek 1051: | ||
| Službou v Linuxe nazývame aplikáciu (proces) alebo súbor aplikácií tvoriacich logický celok, ktoré bežia na pozadí a typicky čakajú na príchodzie požiadavky, | Službou v Linuxe nazývame aplikáciu (proces) alebo súbor aplikácií tvoriacich logický celok, ktoré bežia na pozadí a typicky čakajú na príchodzie požiadavky, | ||
| - | ===Systemd units=== | + | ====Systemd units==== |
| Systemd nespravuje iba služby. Podobne ako plánovač v kerneli pristupuje k procesom a vláknam transparentne a jednotne ich nazýva //tasks//, systemd dokáže spravovať aj sokety, mount pointy, časovače ('' | Systemd nespravuje iba služby. Podobne ako plánovač v kerneli pristupuje k procesom a vláknam transparentne a jednotne ich nazýva //tasks//, systemd dokáže spravovať aj sokety, mount pointy, časovače ('' | ||
| //Pozn.//: všetky typy **// | //Pozn.//: všetky typy **// | ||
| Řádek 1129: | Řádek 1129: | ||
| | | ||
| | | ||
| - | </code | + | </code> |
| Apache server síce beží, ale po reštarte už bežať nebude, je potrebné službu povoliť (// | Apache server síce beží, ale po reštarte už bežať nebude, je potrebné službu povoliť (// | ||
| + | |||
| < | < | ||
| (root)$ systemctl enable httpd | (root)$ systemctl enable httpd | ||
| # overte, ze httpd bezi po restarte | # overte, ze httpd bezi po restarte | ||
| + | $ systemctl status httpd | ||
| </ | </ | ||
| Řádek 1145: | Řádek 1147: | ||
| * '' | * '' | ||
| - | Spustitelné služby se nachází v '' | + | ===Manuálové stránky=== |
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| - | ===Používání služeb=== | ||
| - | Služby mají přípony: | + | ==== Konfiguračné súbory ==== |
| - | * services (.service) | + | Konfiguračné súbory služieb môžu |
| - | * mount points (.mount) | + | * ''/ |
| - | * devices (.device) | + | * ''/ |
| - | * sockets | + | * ''/ |
| + | |||
| + | Občas ale potrebujeme konfiguráciu nainštalovaných služieb pozmeniť podľa našich požiadavkov. Ak teda nemáme pracovať s konfiguráciami v ''/ | ||
| + | |||
| + | My si to ukážeme na príklade s '' | ||
| - | Znovu načtení konfigurace jednotky: | ||
| < | < | ||
| - | systemctl | + | # najprv simulujme pad httpd bez zmeny nastaveni |
| + | (root)$ pkill -SIGSEGV httpd | ||
| + | (root)$ | ||
| + | ● httpd.service - The Apache HTTP Server | ||
| + | | ||
| + | Drop-In: / | ||
| + | | ||
| + | | ||
| + | Docs: man: | ||
| + | Process: 7177 ExecStart=/ | ||
| + | Main PID: 7177 (code=dumped, | ||
| + | | ||
| </ | </ | ||
| - | **TODO:** | + | Upravme teda nastavenie '' |
| + | < | ||
| + | (root)$ systemctl edit httpd | ||
| + | [Service] | ||
| + | Restart=on-abnormal | ||
| + | |||
| + | # overme, ze override.conf sa vytvoril nasou zmenou | ||
| + | (root)$ systemctl cat httpd | ||
| + | ... | ||
| + | # / | ||
| + | [Service] | ||
| + | Restart=on-abnormal | ||
| + | ... | ||
| + | |||
| + | # teraz nastartujme httpd znovu a vyskusajme nasimulovat pad | ||
| + | (root)$ systemctl restart httpd | ||
| + | (root)$ pkill -SIGSEGV httpd | ||
| + | ● httpd.service - The Apache HTTP Server | ||
| + | | ||
| + | Drop-In: / | ||
| + | | ||
| + | | ||
| + | Docs: man: | ||
| + | Main PID: 7846 (httpd) | ||
| + | </ | ||
| + | |||
| + | ===Manuálové stránky=== | ||
| + | | ||
| + | | ||
| + | * '' | ||
| + | |||
| + | ====Vytvárame systémovú službu==== | ||
| + | V predchádzajúcej sekcii sme si na príklade ukázali ako zmeniť konfiguráciu existujúcej služby. V tejto sekcii si vytvoríme vlastnú službu úplne od začiatku. V našom prípade pôjde o systémovú službu a preto budú potrebné práva **roota** po celý čas. | ||
| + | |||
| + | Vyrobme službu, ktorá nám zaloguje aktuálny dátum a nazvime ju **mydate.service** a vytvoríme príslušný súbor v ''/ | ||
| + | < | ||
| + | (root)$ cat / | ||
| + | [Unit] | ||
| + | Description=Ukazem datum | ||
| + | |||
| + | [Service] | ||
| + | Type=oneshot | ||
| + | ExecStart=date | ||
| + | </ | ||
| + | |||
| + | Parameter '' | ||
| + | K tomu, aby systemd vedel o našej novej službe je potrebné najskôr zabezpečiť, | ||
| + | < | ||
| + | (root)$ ls -lZ / | ||
| + | -rw-r--r--. 1 root root unconfined_u: | ||
| + | (root)$ restorecon -FRvv / | ||
| + | Relabeled / | ||
| + | </ | ||
| + | |||
| + | Teraz už môžeme povedať systemd o našej novej službe, to sa robí príkazom '' | ||
| + | < | ||
| + | (root)$ systemctl daemon-reload | ||
| + | (root)$ systemctl list-unit-files -t service mydate.service | ||
| + | UNIT FILE STATE | ||
| + | mydate.service disabled | ||
| + | |||
| + | </ | ||
| + | |||
| + | Po naštartovaní služby by sme mali vidieť zmenu v logu: | ||
| + | < | ||
| + | (root)$ systemctl start mydate | ||
| + | (root)$ systemctl status mydate | ||
| + | ● mydate.service - Ukazem datum | ||
| + | | ||
| + | Drop-In: / | ||
| + | | ||
| + | | ||
| + | |||
| + | (root)$ journalctl -e -u mydate | ||
| + | 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 systemd[1]: Started Ukazem datum. | ||
| + | </ | ||
| + | |||
| + | Zároveň vidíme, že tým, že je naša služba nastavená ako // | ||
| + | < | ||
| + | (root)$ systemctl cat mydate.service | ||
| + | |||
| + | # / | ||
| + | [Unit] | ||
| + | Description=Ukazem datum | ||
| + | |||
| + | [Service] | ||
| + | Type=oneshot | ||
| + | ExecStart=date | ||
| + | |||
| + | # / | ||
| + | [Service] | ||
| + | RemainAfterExit=yes | ||
| + | </ | ||
| + | |||
| + | Ď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 | ||
| + | |||
| + | < | ||
| + | (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' | ||
| + | | ||
| + | 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, | ||
| + | | ||
| + | 4) In case of template units, the unit is meant to be enabled with some | ||
| + | | ||
| + | </ | ||
| + | |||
| + | Systemd nám hneď povie, že s našou konfiguráciou nie je niečo vporiadku. Chýba nám tam totiž sekcia '' | ||
| + | |||
| + | ====Systemd target==== | ||
| + | Systemd **target** je špeciálny druh jednotky, ktorý zoskupuje iné jednotky a vytvára tak určitý synchronizačný // | ||
| + | < | ||
| + | $ systemctl cat httpd | ||
| + | [Unit] | ||
| + | ... | ||
| + | After=network.target remote-fs.target nss-lookup.target httpd-init.service | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | 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 // | ||
| + | Vráťme sa teda k našej službe a nastavme ju ako službu spustiteľnú vrámci '' | ||
| + | |||
| + | < | ||
| + | (root)$ systemctl cat mydate | ||
| + | ... | ||
| + | # / | ||
| + | [Service] | ||
| + | RemainAfterExit=yes | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | |||
| + | (root)$ systemctl enable mydate | ||
| + | Created symlink / | ||
| + | (root)$ systemctl status mydate | ||
| + | ● mydate.service - Ukazem datum | ||
| + | | ||
| + | ... | ||
| + | </ | ||
| - | * power management suspend, hibernate, poweroff... | + | ===Manuálové stránky=== |
| + | | ||
| + | * '' | ||