Hlavní navigace

Nebojte se systemd: zbývající konfigurace

Jan Knížek 18. 7. 2016

Další článek ze série odhalující vnitřnosti systemd. Dnes dokončíme povídání o jádru systemd, představíme si generátory, obecnou konfiguraci a nakonec ještě dodatečné možnosti některých typů jednotek.

Generátory

Minule jsme zmínili generátory, které mají v systemd široké použítí. Nejčastěji slouží ke čtení konfiguračních souborů. Pokud používáme rozdělení disků GPT, můžeme jednotlivé oddíly označit jejich funkcí (pole GUID). Systemd je pak automaticky najde a připojí bez nutnosti konfigurace, např. nalezne oddíl pro domovský adresář a připojí jej do /home. Další podporované jsou boot oddíl, root, swap a serverová data určená k připojení do  /srv.

Další použití je pro aktualizace, které se nainstalují při dalším startu. Pokud existuje složka /system-update, Generátor systemd-system-update-generator spustí místo cíle default.target cíl system-update.target. Podobně generátor systemd-hibernate-resume-generator v případě nastavení parametru jádra resume=cesta k uložené hibernaci spustí službu systemd-hiberante-resume@.service, která po hibernaci uvede systém do původního stavu.

Pokud bychom chtěli jednotky vygenerovat znovu (např. po úpravě generátoru), stačí spustit systemctl daemon-reload, který mimo jiné spustí generátory znovu. Samozřejmě v případě disků se změny neprojeví na připojených discích, ale pouze u jednotek. Pokud bychom kupříkladu změnili připojení na pouze ke čtení, musíme oddíl odpojit a připojit, aby se změny projevily.

Obecná konfigurace systemd

Výchozí konfiguraci systemd mohou změnit nainstalované programy umístěním konfiguračního souboru do /usr/lib/systemd/system.conf.d/. Mechanismus přepisování funguje stejně jako v případě přepisu konfigurace jednotek v adresáři jmeno.d. Ještě vyšší prioritu pro konfiguraci má soubor /etc/systemd/system.conf, který je určen pro administrátora. Pokud chceme měnit konfiguraci uživatelského režimu (uživatelský režim je přepnut přepínačem --user), můžeme použít soubor /etc/systemd/user.conf. Možných umístění konfiguračních souborů je ještě více, podrobný popis může čtenář nalézt v  man systemd-system.conf.

Formát konfiguračního souboru je stejný jako ten u jednotek. Parametry nastavujeme v sekci Manager ve formátu na jednu řádku název=hodnota. Ukázkový soubor  /etc/systemd/system.conf:

[Manager]
DefaultTimeoutStartSec=10s
DefaultTimeoutStopSec=10s
DefaultEnvironment=machine=desktop

Níže je popis několika nejdůležitějších parametrů, ostatní jsou opět v manuálové stránce.

DefaultTimeoutStartSec, DefaultTimeoutStopSec
Nastavení maximální doby, po kterou se může jednotka aktivovat/deaktivovat. Poté bude příslušná činnost ukončena. Toto nastavení je možné změnit pro konkrétní službu volbou TimeoutStartSec, resp. TimeoutStopSec. Výchozí hodnota je 90s.
DefaultRestartSec
Prodleva mezi deaktivací a následnou aktivací při restartu jednotky. Výchozí 100ms.
DefaultEnvironment
Nastavení proměnných, které budou mít všechny jednotky. Hodnotou je seznam oddělený mezerami ve tvaru jmeno=promenna. Tedy např.  DefaultEnvironment="PROMENNA1=hodnota s mezerou" PR2=hodnota2
RuntimeWatchdogSec
Při použití této volby se při startu hardwarový watchdog (pokud je k dispozici na daném stroji) nastaví na stanovený interval. Systemd pak alespoň jednou za polovinu této doby watchdog kontaktuje. Pokud během intervalu ke kontaktu nedojde, watchdog restartuje počítače.
LogLevel
Nastavení úrovně logování. Hodnota může být buď číslo nebo jedna z hodnot: emerg, alert, crit, err, warning, notice, info, debug. Logovány budou všechny události, které mají alespoň takovou prioritu, jako je hodnota tohoto nastavení. Výchozí je info.

Doplňující konfigurace typů služba, socket, mount, swap

Pro tyto typy existuje ještě další konfigurace týkající se spouštění jednotek (uvedená v man systemd.exec). První je parametr WorkingDirectory. Hodnotou je absolutní cesta, popř. vlnka (~), která zastupuje domovský adresář uživatele, s jehož právy jednotka běží. S tím souvisí User a Group . Jejichž hodnotou je buď jméno, nebo ID. Pokud není určena skupina, použije se výchozí daného uživatele.

Volbou StandardInput můžeme nastavit, kam bude připojen file deskriptor 0 spuštěného procesu. Možné hodnoty jsou null, v tomto případě bude přesměrován do /dev/null. Pokud je služba spouštěna socketem a je nastaven právě jeden socket, můžeme nastavit StandardInput=socket a na stdin bude přesměrován tento socket. Příklad služby move2tmp.service z minula bychom tedy mohli napsat následovně:

move2tmp.service

[Service]
ExecStart=/bin/sh -c "cat >> /tmp/ab"
StandardInput=socket

move2tmp.socket

ListenFIFO=/tmp/socket

Pokud nastavíme parametr TTYPath, kde hodnotu je terminál. Můžeme standardní vstup nastavit na tty, tty-force, tty-fail, které v různých obměnách nastaví terminál z TTYPath jako stdin.

Co se týče StandardOutput a StandardError mimo výše zmíněných jsou možné hodnoty inherit, který jen přesměruje stdin na stdout. Hodnotami journal, syslog, kmsg můžeme nastavit výstup do logů journalctl, syslog, kmsg. Analogicky funguje i parametr StandardError.

Dalším zajímavým nastavením je parametr PrivateTmp. Když je nastavený na true, jednotka dostane připojený vlastní /tmp a /var/tmp, což se může hodit například při riziku kolize dočasných souborů. Pomocí parametrů ReadOnlyDirectories a InaccessibleDirectories můžeme specifikovat, které složky bude mít jednotka pouze pro čtení a které jí budou nedostupné. Nastavením ReadOnlyDirectories=/home/knezi tak zabráníme změně dat uživatele knezi.

Také je možné omezovat systémové zdroje jednotek. Např. parametrem MemoryLimit=2G nastavíme, že jednotka může alokovat maximálně 2 GB paměti RAM. Podobně CPUQuota=20% říká, že daná jednotka bude mít k dispozici maximálně dvacet procent procesorového času. Další typy omezení jsou v man systemd.resource-control  a jsou společné pro typy slice, scope, služba, socket, mount a swap.

Tím jsme probrali celou konfiguraci systemd. Příště si představíme některé nástroje (jako např. journal), které jsou součástí systemd.

Našli jste v článku chybu?

22. 7. 2016 12:38

CERN (neregistrovaný)

Asi nemate takovy vliv na deni v CERNu, jak tu prezentujete, protoze jak Cern CentOS 7 tak i Scientific Linux 7 byl vydan uz pred dvema lety. Samozrejme migrace rozsahlych cernskych aplikaci z 6 na 7 nejaky cas trva, ale stejne to bylo pri prechodu z 5 na 6 takze systemd v tom nehraje tu zasadni roli (znam experimenty, kteri na verzi 6 migrovali teprve loni). Mohu Vas uklidnit, ze zive experimenty se na podporu CC7 pripravuji a zadnou smrt neplanuji a napr. OSG middleware ma jiz pres rok podporu…

22. 7. 2016 23:32

Sten (neregistrovaný)

Komentuje Kiwi prostřednictvím HTTP a HTML…

Vitalia.cz: To nejhorší při horečce u dětí: Febrilní křeče

To nejhorší při horečce u dětí: Febrilní křeče

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Lupa.cz: Na koho se v Křišťálové Lupě nedostalo?

Na koho se v Křišťálové Lupě nedostalo?

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Lupa.cz: Seznam mění vedení. Pavel Zima v čele končí

Seznam mění vedení. Pavel Zima v čele končí

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?