Systemd – minimális alapok

Sudo beállítása
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.

Related Posts