Hlavní navigace

Nebojte se systemd: další komponenty

Jan Knížek 25. 7. 2016

V dnešním posledním článku o správě systému se systemd si představíme další komponenty: především čtení logů, ale také přihlašování uživatelů, správu času a sítě.

Journal – konfigurace

Pro logování slouží v systemd program journal. Informace si na rozdíl od původního syslogu ukládá binárně, což bývá často kritizováno odpůrci systemd. Obecně ukládá více metadat než syslog a podporuje pokročilejší správu logů. Informace o něm jsou v manuálové stránce systemd-journald. Jako konfigurační soubor slouží /etc/systemd/journald.conf. Konfigurační soubor je opět stejného formátu, s jakými jsme se doposud setkali. Veškerá konfigurace se provádí v sekci Journal.

Protože journal uchovává více dat, je nutné pečlivěji nastavit práci s pamětí. Pro některá zařízení může být zápis na disk příliš náročný, a proto existuje parametr Storage. Pokud jej nastavíme na hodnotu volatile, veškerá data se budou ukládat v adresáři /run/log/journal a tedy budou pouze v paměti RAM. Jako následek budou samozřejmě po restartu počítače vymazána. Nastavíme-li hodnotu persisent, data budou naopak uchovávána v /var/log/journal  a budou tak přístupná i po restartu počítače. Výchozí hodnotou je auto, která, pokud existuje /var/log/journal, je ekvivalentní persistent, v opačném případě volatile. Poslední možností je none, kdy journal jednoduše logy nikam neukládá. Může se hodit, pokud například budeme všechna data přesměrovávat syslogu.

Pro ušetření místa nám může pomoc Compress=true. Journal při tomto nastavení bude automaticky data komprimovat. Kromě toho journal také nabízí možnosti automatického mazání starých záznamů. Všechny parametry mají dvě varianty. Ty, které začínají na System, se uplatní ve chvíli, kdy se data zapisují do adresáře /var/log/journal. Jinak se použijí limity začínající na Runtime.

Nejjednodušší variantou je SystemMaxUse (a samozřejmě RuntimeMaxUse, dále budeme uvádět je variantu se System), kterému jako hodnotu nastavíme maximální velikost souboru v bytech na disku (samozřejmě fungují přípony K, M a G). Journal pak automaticky maže nejstarší data tak, aby se zbylá data vešla do limitu. Místo velikosti je také možné použít relativní v procentech, pak se dosadí poměrná část z velikosti oddílu.

Doplňkem k předchozímu parametru je SystemKeepFree, který má stejné hodnoty, jen se maximální velikosti logu vypočte tak, aby zbylo volné místo na oddílu definované tímto parametrem. Ostatní parametry je možné nalézt v  man journald.conf

Čtení logů

Část logu dané jednotky zobrazuje při výpisu příkazu systemctl status. Pro kompletní výpis logů slouží příkaz journalctl, který vypíše obsah celého logu od nejstarších položek. Které přesně položky logu budou vypsány, můžeme ovlivňovat parametry sepsanými níže. Pokud jich uvedeme více, zobrazí se jen ty záznamy, které splňují všechny podmínky.

-f, –follow
Vypíše pouze několik nejnovějších logů a zároveň do výstupu postupně připisuje všechny nové záznamy
-n, –lines=číslo
Vypiš jen tolik nejnovějších záznamů, kolik je hodnota tohoto parametru
-u, –unit=jméno
Vypíše pouze záznamy týkající se dané jednotky, tento parametr je možné předat vícekrát. V tom případě se vypíší záznamy o každé jednotce.
--user-unit=jméno
Analogie předchozího parametru v uživatelském režimu
-S, –since=čas
Zobrazí se pouze záznamy, které jsou novější než zadaný čas. Formát je stejný jako v případě časovačů, můžeme tedy použít standardní zápis 2016–07–20 17:41:25, či kupříkladu hodnotu yesterday.
-U, –until=čas
Funguje stejně jako předchozí parametr, pouze vynucuje zobrazení starších záznamů.

Následující neupravují, které záznamy jsou vypsány, ale usnadňují práci s logem:

-e, –pager-end
Automaticky odskroluje na konec
-r, –reverse
Přehodí pořadí, tedy nejnovější záznamy budou na začátku

Journal je obsluhován službou systemd-journald. O rotaci souborů se stará logrotate.service. O pravidelné spouštění se stará logrotate.timer, který je ve výchozím nastavení pouštěn denně.

Uživatelská sezení

Sezení uživatelů spravuje v systemd služba se jménem systemd-logind. Tu je možné nakonfigurovat v souboru /etc/systemd/logind.conf, kde je možné především různá omezení, jako např. maximální počet sezení najednou. Pro správu terminálů existuje šablony getty@.service, tedy např. první terminál je služba getty@tty1.service. Hezkou ukázkou, jak funguje přepis konfigurace, je nastavení automatického přihlášení nějakého uživatele. Stačí vytvořit následující soubor:

/etc/systemd/system/getty@tty1­.service.d/override.conf

[Service]
Restart=no
ExecStart=
ExecStart=-/usr/bin/agetty --autologin knezi --noclear %I $TERM

Jak už víme, tento soubor přepisuje konfiguraci, proto služba getty@tty1.service místo původního příkazu bude spouštět ExecStart=-/usr/bin/agetty --autologin knezi --noclear %I $TERM. Navíc ještě zakážeme restartování, což se může hodit v případě vzniku nějaké chyby, kteoru pak snadno můžeme opravit z jiného terminálu jiným uživatelem.

Další komponenty

Spíše pro přehled si uvedeme další čtyřikomponenty systemd. První je systemd-udevd. Kernel při změně stavu nějakého hardwaru (např. připojení, či jeho odpojení) vytvoří událost, kterou právě obsluhuje systemd-udevd. Obsluhu můžeme snadno vytvořit novou pomocí tzv. udev pravidel. Více v manuálových stránkách systemd-udevd a udev.

Systemd-networkd má za úkol sledovat rozhraní pro připojení k síti a případně je konfigurovat.

Pro analýzu startu počítače jeho potenciální zrychlení slouží komponenta systemd-analyze. Příkaz systemd-analyze blame vypíše, kdy byly spuštění jednotky a můžeme tak objevit ty, které se startovaly nejdéle. Přestože systemd se snaží spouštění jednotek paralelizovat, jak jen je to možné, v některých fázích se čeká na pouze jedinou jednotku. Pro nalezení takových slouží příkaz  systemd-analyze critical-chain.

Poslední komponentou, kterou si představíme, je systemd-timedated. Pomocí této služby můžeme měnit aktuální čas, časovou zónu a povolit/zakázat NTP. Ke změně nastavení slouží příkaz timedatectl. Příkazem timedatectl set-ntp true můžeme nastavit automatickou synchronizaci pomocí protokolu NTP. Příkazem timedatectl set-time "2016-07-21 14:30" pak nastavíme aktuální čas na 21. července půl třetí odpoledne.

Dva tipy na závěr

V některém z předchozích dílů jsme si říkali, že je možné přepisovat konfiguraci služeb pomocí vytvoření souborů ve složce jmeno.d. Pro tuto činnost slouží příkaz systemctl edit jméno editované jednotky, který automaticky otevře soubor /etc/systemd/system/jmeno.d/override.conf, čímž nám ušetří trochu psaní.

Mezi administrátory se pravděpodobně nenajde moc těch, kteří raději klikací konfiguraci, ale i tak systemd nabízí jednoduché klikátko (které ale rozhodně neumí vše) pro administraci. Jmenuje se systemadm a mělo by být v balíčku systemd-ui.

V tomto seriálu jsme postupně prošli všechny základní části systemd a řekli si o dalších komponentách. Samozřejmě jsme většinu brali spíše povrchně pro první seznámení. Další informace může čtenář najít v manuálových stránkách.

Našli jste v článku chybu?

27. 7. 2016 8:58

Takže tady máme Filipa Jirsáka coby autora seriálu a tudíž automaticky zastánce systemd.

Upřímně řečeno, kdyby ten seriál napsal Jirsák, bylo to by to na zcela jiné úrovni a rád bych si takové články přečetl.

Pro mě osobně to znamená, že se Linux dostává do stavu, ve kterém se dle mého názoru nikdy neměl ocitnout

Můj postoj k systemd je následující a dlouhodobě neměnný: Kdyby to byl jeden program ze 40 tis. v repu, tak jsem rád, že tam je. Protože pokud se najde situace, pro kterou je vhodný,…

27. 7. 2016 18:31

Tak jak si přejete, abych vás nazýval? Společným znakem všech vašich komentářů je, že se snažíte dát všemožně najevo, že nemáte rád systemd – i za cenu, že ze sebe uděláte úplného hlupáka. Pokud jediným projevem někoho je, že nemá rád systemd, jak jinak ho nazývat, než odpůrce systemd? Já vím, že systemd-hater je výstižnější a ironicky to odkazuje na způsob pojmenování binárek v systemd, ale já anglicismy nemám rád, takže to moc nepoužívám.

Kdybyste kritizoval systemd, psal byste věcné komen…

Lupa.cz: E-shopy: jen sleva už nestačí

E-shopy: jen sleva už nestačí

Vitalia.cz: Vláknina: Rozpustná, nebo nerozpustná?

Vláknina: Rozpustná, nebo nerozpustná?

Vitalia.cz: Jak koupit Mikuláše a nenaletět

Jak koupit Mikuláše a nenaletět

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

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: Přivýdělek u Airbnb nebo Uberu? Čekejte kontrolu

Přivýdělek u Airbnb nebo Uberu? Čekejte kontrolu

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

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

Rakovina oka. Jak ji poznáte?

DigiZone.cz: Flix TV má set-top box s HEVC

Flix TV má set-top box s HEVC

DigiZone.cz: Další dva kanály nabídnou HbbTV

Další dva kanály nabídnou HbbTV

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

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

Recenze Westworld: zavraždit a...

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

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

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

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: Žloutenka v Brně: Nakaženo bylo 400 lidí

Žloutenka v Brně: Nakaženo bylo 400 lidí

Podnikatel.cz: Platební brány a EET? Stále s otazníkem

Platební brány a EET? Stále s otazníkem

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá