SystemD alapok

Systemd. Mindenki hallott róla, és a legtöbbünk használja is, még akkor is, ha nem tudja mi is ez. Már volt érintőlegesen szó a systemd témáról, amikor a cron-t kezdtük el használni. Ott már láttuk, hogy valami rendszerhez tartozó, és szolgáltatást nyújtó valami. Kis kitérő: sem tudásom, sem kedvem nincs eldönteni, hogy a systemd Poettering, a Linuxot romba döntő ördögi eszköze, és a Sátán maga, vagy egy csodafegyver. Örök vita lesz ez, és nincs is nagyon értelme ebbe belefolyni. Nem is teszem.

Mi az a systemd:

A systemd egy rendszer-előkészítő és rendszer-menedzselő szoftver, amely egy szabvány lett a Linux rendszerek számára. A fent linkelt wiki cikkben olvashatsz róla, tedd is meg. Illő ismerni az alapokat, az általános leírást.

  • A systemd gyorsabb rendszerindítást tesz lehetővé.
  • Minden démon egy egyszerű konfigurációs szkripttel indul.
  • Ha leáll egy démon, automatikusan újraindításra kerül.
  • Minden processz saját cgroup-ban fut, alapértelmezetten, így azok egymástól jól elszeparálva futnak.
  • A systemd-nek saját naplózó rendszere van.

Erről már volt szó! Sok egyéb dolgot is tud, de a legtöbb már haladó téma, így mi most a systemd alapokat vesszük át. Áttekintjük a systemctl parancs használatát, amellyel kezelhetjük a szolgáltatásokat, megtekinthetjük vagy megváltoztathatjuk állapotukat, dolgozhatunk a konfigurációs fájlokkal. Az alapmeghatározás: „systemd egy rendszer-előkészítő és rendszermenedzselő”. Így mindenképp fontos a gondos munka, amihez nem értesz, nem kell bántani elv. Bár nagyon kevés olyan teendő van, amivel tönkreteheted a rendszeredet, de egy fontos systemd elem letiltása, beleszerkesztés komoly problémát fog okozni kezdőknek. Mindig jegyezd meg mit tettél, és ha kell azt vissza is tudd vonni!

Kell ez nekem?

Nem Te döntöd el. A Linux disztribúciód készítője eldönti, és ha te kiválasztod az adott Linuxot, akkor már nem, vagy csak nagyon nehezen tudsz megszabadulni tőle, vagy beletenni, ha ez neked nincs benne. Azaz a distrowatch-on meg kell nézni ezt a választás előtt. A nagyon nagy többség használja a systemd rendszert. Én használtam mindkét verziót, gyakorlatilag felhasználói szinten nem lesz nagy különbség. Ha nem tudjuk komoly, saját érvekkel alátámasztani a mellette/ellene szóló érveket, bízzunk meg a disztribútorban, hogy majd ő kiválasztja azt a megoldást ami szerinte jó.

Systemd menedzsment

A systemd rendszer-előkészítő feladata, hogy a Linux kernel indulása után előkészítse az induló szolgáltatásokat. A rendszer-előkészítővel kezeljük a szolgáltatásokat, démonokat a rendszer futása közben. Azaz ez a systemd felel nagyon sok olyan háttérmunkáért, amiről sok esetben nem is tudunk, de szükségesek a rendszerhez, vagy egy-egy feladat indításához. A systemd rendszerben a legtöbb művelet az unit-okhoz (egységekhez) kapcsolódik. Az unit-ok kategorizálva vannak az általuk képviselt erőforrás típusa szerint. Az unit típusát a fájl kiterjesztése mutatja számunkra. Ma a számunkra legismertebb részt a szervizeket, a .service témát ismerjük meg. A szolgáltatások számára egy .service kiterjesztésű fájlt használunk. A szolgáltatások kezelése során, a .service kiterjesztés megadása általában elhagyható.

Szolgáltatások indítása, leállítása

Van pár olyan teendő, amit érdemes egyszer kipróbálni, és a terminálos megoldást megtanulni. Gyorsabb és független a telepített grafikus és egyéb programoktól. Nem lesz nehéz a dolog, mert maga a parancs felépítése egyszerű. A systemctl kiadásával kapsz egy hosszú listát, amiből több fontos dolgot is megtudsz. Egyrészt az unitok, azaz a lehetséges eszközök pontos neveit. Másrészt látod, hogy sokféle kiterjesztés van, és azok vélhetően eltérő feladatokat látnak el. A kiterjesztések logikus és elég egyértelmű elnevezésűek, így sejthető a feladatuk is. Én a példákat a cronie-vel, a cron, azaz idősítő eszközzel mutatom be. Te válassz egy, a rendszeredben meglévő, általad ismert eszközt.

Indítás: systemctl start cronie.service

Indítás a .service kiterjesztés elhagyásával: systemctl start cronie

Ha egy szolgáltatást akarsz kézzel indítani, akkor így megteheted. Ez csak ritkán, főleg teszteléskor kényelmes, de általában már automatikusan szeretnénk indítani valamit. Logikus, hogy a cronie, a crontab működésért felelős dolog az fusson mindig, hiszen akkor látja el a feladatát rendesen.

Szolgáltatás leállítása: systemctl stop cronie.service

A funkciója logikus: leállítasz egy szolgáltatást. Ritkán használjuk, tesztelés, hibakeresés esetén. Amire nagyon figyelj: csak olyant állíts le, amit biztosan ismersz és nem lesz gond a futó rendszereddel. Bár egy reboot rendbe teszi a dolgokat, ha stop-ot használsz, de nem túl elegáns megoldás!

Újraindítás, újratöltés: systemctl restart cronie.service

Konfiguráció újratöltése: systemctl reload cronie.service

Ha nem vagyunk benne biztosak, hogy a konfiguráció újratölthető-e az adott alkalmazás esetén, akkor használjuk a reload-or-restart parancsot: systemctl reload-or-restart cronie.service Ezek azok a parancsok, amik addig élnek, amíg a rendszer fut. Így indított cronie nem fog automatikusan futni.

Sytemd szolgáltatás engedélyezése, tiltása Ha a rendszer indulásával együtt szeretnénk egy szolgáltatást elindítani, vagy végleg leállítani, akkor azt véglegesíteni kell. Itt már nagyobb figyelem kell, mert ha letiltasz egy fontos szolgáltatást, akkor lehet, hogy gondjaid lesznek. Nem indíts, és ne tilts le olyant, amiről nem tudod mit tesz!

systemctl enable cronie.service

Ez a parancs egy szimbolikus linket hoz létre, rendszerint a /lib/systemd/system/ könyvtárból /etc/systemd/system könyvtárba. Általában. Ettől eltérhetnek az általad használt rendszernél, de a leírásokban ott lesz ez is. Így ha ezeket a könyvtárakat felkeresed, tetszőleges .service fájlba belenézel, akkor láthatod sima szöveges fájlok.

A szolgáltatás tiltása, a rendszer indulásával együtt:

systemctl disable cronie.service

Ez a parancs törli az „enable” paranccsal létrehozott szimbolikus linket, amivel az automatikus indítás is megszűnik. Ezek a parancsok az aktuális munkamenetben nem indítják el, vagy nem állítják le az adott szolgáltatást, csak egy reboot után. Ezt érdemes megjegyezni, és ha kell, akkor a start parancsot használni azonnali indításhoz.

A systend szolgáltatás ellenőrzése:

systemctl status cronie.service

laci:~/ $ systemctl status cronie.service [8:14:23]

● cronie.service - Periodic Command Scheduler Loaded: loaded (/usr/lib/systemd/system/cronie.service; enabled; vendor preset: disabled)

Active: active (running) since Fri 2020-10-23 17:48:51 CEST; 14h ago Main PID: 454 (crond) Tasks: 1 (limit: 19087)

Memory: 113.4M CGroup: /system.slice/cronie.service └─454 /usr/bin/crond -n

Kis infó, de ez maximálisan elegendő, hogy tudjuk: engedélyezve van, mennyi a memória felhasználása, és mit is indít el. Illetve ennél több infót is adhat, a cronie pld. az utolsó futás idejét, a kimenetet, és egyéb, az adott funkcióhoz tartozó infót is kiírja. Szuper! Gyorsan kapsz egy infócsomagot a témáról. Próbálj ki párat!

Ha csak szeretnénk ellenőrizni, hogy a szolgáltatás aktív vagy nem: systemctl is-active cronie.service

A parancs a képernyőre írja az active vagy a inactive jelzőt. A parancs visszatérési értéke 0, ha a szolgáltatás aktív. Ha nem aktív nullától eltérő szám. Alapvetően a status szerintem jobb megoldás, több infót ad. Ezt inkább szkriptekben érdemes használni, ha a státuszát egy szóban, vagy kimenetei értékben akarjuk lekérdezni.

Azt is lekérdezhetjük, hogy rendszerindításkor engedélyezve, vagy tiltva van: systemctl is-enabled cronie.service

Ugyanaz igaz rá, mint az is-active-re. Maga a sytemclt ennél sokkal többet tud, de alapnak ennyi elég szerintem. Kb. fél tucat parancs, nem okozhat gondot megjegyezni.

Miért is fontos ez számodra?

Az esetek 99%-ban nem az. A maradék egy százalékban jól jöhet, ha „egy programot (pld. a cronie) felrakod, és nem működik” esetbe futsz bele. Ennél is indítani kell a szervizt, és nem indul magától. Ami bosszantó. Illetve így kézben tartod a rendszeredet, átnézheted, mi induljon rendszerindításkor és mi nem. A Linux disztribúciókban letérő szolgáltatások indulnak, így ha valami nincs, vagy felesleges azt szabályozni tudod. A harmadik fontos téma az ideiglenesen indítandó, vagy az ideiglenesen letiltandó szolgáltatások. A cronie-nél maradva: Nekem óránként lefutó mentési parancsaim vannak, de a havi rendszerességű kézi archiválásoknál nem lenne jó, ha összevissza mentegetne olyan könyvtárakat, amiket éppen rendezek, tömörítek stb. Egy stop, és máris nem okoskodik az időzítés… Oké, mára ennyi, de lesz folytatása.

A blogomban, a magyarlinux.hu oldalon jelent meg.

Hozzászólások

mi a jó sz.. történt?

írtam kiegészítést, szép hosszú hozzászólást, és mire befejeztem volna FF újratöltötte az oldalt, minden eltűnt....

Értékelés: 

0
Még nincs értékelve

Kiegészítésként

systemd-analyze time

Megmutatja, milyen gyorsan indult a rendszer. Akkor lehet hasznos, ha lassúnak találjuk a gépet. Ezzel el lehet dönteni, hogy a rendszerrel van baj, a net kapcsolattal, vagy az éppen futó programmal... Az értékeket össze lehet hasonlítani net-en található értékekkel, fórumban megtárgyalni, stb.

systemd-analyze blame

A fentihez kapcsolódik, mutat egy sok oldalas listát a betöltött modulokról, a leglassabb lesz legfelül. A listában a nyíl (kurzormozgató) gombokkal lehet fel-le navigálni, q-val lehet belőle kilépni.

systemd-analyze plot >milassu.html

A fentihez hasonló, készít egy szép színes html fájlt (milassu.html) a mappánkba. Ez vízsszintes idősorban mutatja a futási időket,  a betöltési sorrend pedig a függőleges tengely mentén van ábrázolva. (Szép széles lesz a lista.) Html helyet meg lehet adni képformátumot is, pl. milassu.svg. Jó nagy pixelszámú kép lesz, betöltése lassabb, mint a html fájljé.

Mondjuk, hogy a fentiekből az derül ki, hogy valami gond van az avahi-daemon-al. Ekkor jól jöhet ez alábbi parancs:

systemd-analyze dot 'avahi-daemon.*' | dot -Tsvg > avahi.svg

Lesz egy szép grafikus ábránk (avahi.svg a mappánkban) az összes olyan modulról és függőségeiről, melyeknek neve "avahi-daemon"-al kezdődik. A képen pirosan látszik az, amivel gebasz van. A parancs egyébként kijelzi a színek jelentését.

Megjegyzés: a dot parancs használatához valószínű, hogy telepíteni kell a graphviz program csomagot (nem része az alap Mintnek pl.), ezt így kell:

sudo apt install graphviz

Ez egy pöpec kis paranccsoros programcsomag, amivel grafikonokat lehet generálni, pl. a fenti módon, de kismillió más módon is.

No, és milyen megcélzott modulok vannak (amik nincsenek, vagy gond van velük?) Így megtudhatjuk:

systemd-analyze dot --to-pattern='*.target' --from-pattern='*.target' | dot -Tsvg > modulok.svg

Itt is pirossal lesz jelölve, ahol gebasz van. Mármint a képen, ami a mappánkba készül, modulok.svg néven....

Értékelés: 

0
Még nincs értékelve

Kiegészítésként

#3 Akinek Intel Skylake (6000-es sorozat) vagy ennél újabb Intel CPU-ja van, az aktiválhatja
az Intel Fastboot-ot. https://wiki.archlinux.org/index.php/intel_graphics#Fastboot
Észrevehetően rövidíti a boot folyamatot.

Értékelés: 

0
Még nincs értékelve

Kiegészítésként Kiegészítésként

#3.1

#3.1 Ez itt kicsit offtopic, itt a Systemd-ről, és annak használatáról van szó.

Értékelés: 

0
Még nincs értékelve

Kiegészítésként

#3 Köszi a kiegészítést. Ha megengeded pár beszúrással átemelném a blogba is. 

Értékelés: 

0
Még nincs értékelve

Kiegészítésként

#3.2 Hogy a csudát ne engednén, ez amúgy nyilvános fórum, én azt gondolom, amit ide írok, az mindenkié, és azt csnál vele amit akar wink

Értékelés: 

0
Még nincs értékelve

Kiegészítésként

#3.2.1 Köszi. 

 

Értékelés: 

0
Még nincs értékelve

Kiegészítésként

#3 Szia

A rendszerindításom picit sztm lassabb a kelleténél. Ahogy korábban írtad (még a 20 upgrade 20.1 rovatba) leellenőriztem. Azért ide írtam, mert itt volt a systemd-vel foglalkozva korábban.

Ezt találtam:

https://i.imgur.com/x212lUn.png

Tudnál nekem segíteni - egyáltalán fontos ez? Jól van ez így vagy sem?

Köszönöm.

Értékelés: 

0
Még nincs értékelve

Kiegészítésként

#3.3 Hót zicher, hogy errre válaszoltam a tegnap, hova tűnt.?

Szóval, ez annyira nem lassú, vannak ennél sokkal lassabb rendszerek is, annyira nem foglalkoznék vele. Az sda2-t leszámítva. Az mi? Swap, vagy másik partíció?

 

Értékelés: 

0
Még nincs értékelve

Kiegészítésként

#3.3.1 Egy partícióm van. Swap.

Annyira nem lassú. Csak mivel tudatlan vagyok, kérdezek. :)

Értékelés: 

0
Még nincs értékelve