A systemd linux inicializáló rendszer és szolgáltatáskezelő részletei

Mi az a systemd? Az init rendszer működése és legfontosabb parancsai

Mi az a systemd, és miért találkozol vele sok népszerű Linux-disztribúción? Ez a program indítja el a szolgáltatásokat, és futás közben felügyeli őket. Ha érted a működését, gyorsabban megtalálod egy hibás szolgáltatás okát. A cikk a hivatalos dokumentáció alapján mutatja be a lényeget.

  • Mi az a systemd? Rendszer- és szolgáltatáskezelő, amely PID 1 folyamatként indul.
  • Egységfájlokkal dolgozik, például service, timer és target típusokkal.
  • A systemctl paranccsal indítod, állítod le és engedélyezed a szolgáltatásokat.
  • A journalctl paranccsal olvasod a szolgáltatások naplóit.

 

Mi az a systemd, és mit csinál pontosan?

A systemd a Linux rendszer- és szolgáltatáskezelője. Ha az első folyamatként (PID 1) indul, init rendszerként viselkedik. Ilyenkor elindítja a felhasználói térben futó szolgáltatásokat, és életben tartja őket. A hivatalos dokumentáció szerint minden bejelentkezett felhasználóhoz külön felhasználói példány is indulhat, amely a saját szolgáltatásait kezeli.

Lennart Poettering és Kay Sievers a systemd-t a macOS launchd és az Upstart által inspirálva írta

A rendszerindítás néhány alapfeladatát maga végzi el. Beállítja például a gépnevet, felkonfigurálja a loopback eszközt, és csatolja az API-fájlrendszereket, mint a /proc és a /sys. Ezért nem csak egy egyszerű szolgáltatásindító program. Nem minden disztribúció használja: a Void Linux például systemd nélkül működik.

Érdekesség, hogy a systemd csak a minimálisan szükséges egységeket tartja a memóriában. Ha összefoglalod, mi az a systemd, három feladatot kapsz: indítás, felügyelet és naplózás. A terminál alapparancsait a legfontosabb Linux parancsok cikk gyűjti össze.

 

Milyen egységtípusokat ismer a systemd?

Mi az a systemd egység? Az általa kezelt objektumok neve, amelyeket egységfájlok írnak le. A dokumentáció tizenegy típust sorol fel: service, socket, target, device, mount, automount, timer, swap, path, slice és scope. A leggyakrabban a service, a timer és a target típussal találkozol.

Utolsó frissítés: 2026-10-30
Típus Mire való Példa fájlnév
service Folyamat vagy szolgáltatás indítása és felügyelete pelda.service
socket Socket alapú indítás: a szolgáltatás az első kapcsolatra indul pelda.socket
timer Időzített vagy ismétlődő indítás mentes.timer
target Egységek csoportosítása, indulási szakaszok jelölése multi-user.target
mount Fájlrendszer csatolási pontjának kezelése adat.mount

Egy egység a következő állapotok egyikében lehet: active, inactive, failed, activating, deactivating, maintenance, reloading vagy refreshing. A systemctl status parancs ezt az állapotot is megmutatja. Hibás működésnél a failed állapotot keresd.

 

Hogyan indítja el a rendszert a systemd?

Indításkor a systemd a default.target egységet aktiválja. Ez általában a graphical.target vagy a multi-user.target neve alatt fut. A target feladata, hogy felhozza az indításkor szükséges szolgáltatásokat. A sorrendet a függőségek határozzák meg, a kért állapotváltozásokat pedig sorba állított feladatok (job) hajtják végre.

Az indítási célt egyszeri alkalomra felülírhatod a kernel parancssorában. Erre a systemd.unit= paraméter szolgál, például systemd.unit=rescue.target. A rescue és az emergency rövidítés is működik. Így mentő üzemmódban is elindíthatod a gépet.

Fontos döntési szempont, hogy a követelmény és a sorrend két független beállítás. A Requires= azt mondja meg, mire van szükség, az After= pedig azt, mi után induljon. Ha csak az egyiket adod meg, a másik nem következik belőle. Az egyik legismertebb disztribúciót az Ubuntu részletes bemutatása ismerteti.

 

Hogyan kezeled a szolgáltatásokat a systemctl paranccsal?

A szolgáltatásokat a systemctl paranccsal indítod, állítod le és ellenőrzöd. A start azonnal elindítja az egységet, a stop pedig leállítja. A status megmutatja az aktuális állapotot és a legutóbbi naplóbejegyzéseket. Az indítás és a leállítás rendszergazdai jogot kér, ezért használj sudo-t.

A boot folyamat végén a linux kernel betölti a systemd-t és átadja neki a vezérlést, majd megkezdődik az indítási folyamat

Egy szolgáltatás indítása, leállítása, újraindítása és állapotának lekérdezése (cseréld a pelda.service nevet a sajátodra):

sudo systemctl start pelda.service
sudo systemctl stop pelda.service
sudo systemctl restart pelda.service
systemctl status pelda.service

Az enable a rendszerindításhoz köti a szolgáltatást, de nem indítja el azonnal:

sudo systemctl enable pelda.service
sudo systemctl enable --now pelda.service

A reload a szolgáltatás saját beállításait olvastatja újra, az egységfájlokat viszont nem. Az egységfájlok újraolvasásához a daemon-reload kell. A restart ezzel szemben leállítja, majd újra elindítja az egységet, és a nem futó egységet is elindítja.

Tipikus hiba, hogy valaki csak az enable parancsot futtatja, és azt hiszi, a szolgáltatás már fut. A dokumentáció szerint az enable nem indítja el az egységet. Az is-active és az is-enabled parancs két külön kérdésre válaszol: fut-e most, és induláskor elindul-e.

A list-units azt mutatja, amit a systemd éppen a memóriában tart. Alapból csak az aktív, függőben lévő vagy hibás egységeket listázza. A list-unit-files a telepített egységfájlokat és az engedélyezettségi állapotukat listázza. A hibás egységeket így szűrheted:

systemctl list-units --failed

 

Hogyan hozol létre saját szolgáltatást?

Saját szolgáltatást egy .service végű egységfájllal hozol létre. A fájl három részből áll: [Unit], [Service] és [Install]. A [Service] rész ExecStart= sora adja meg az indítandó parancsot. A rendszergazdai szolgáltatásfájlokat az /etc/systemd/system könyvtárba mentsd, ahol elsőbbséget élveznek a disztribúció fájljaival szemben.

Egy minimális példa, amely hiba esetén újraindítja a programot:

[Unit]
Description=Pelda szolgaltatas

[Service]
ExecStart=/usr/local/bin/pelda-program
Restart=on-failure

[Install]
WantedBy=multi-user.target

Mentés után olvasd újra az egységfájlokat, majd engedélyezd és indítsd el a szolgáltatást:

sudo systemctl daemon-reload
sudo systemctl enable --now pelda.service

A Type= beállítás azt határozza meg, mikor tekinti a systemd elindítottnak a szolgáltatást. A simple típusnál a fő folyamat elindítása után azonnal, az exec típusnál a program végrehajtása után. A forking típus használatát a dokumentáció nem javasolja. Oneshot esetén a főfolyamat kilépése után tekinti késznek az egységet.

A Restart=on-failure akkor indít újra, ha a program nem nulla kóddal lép ki, vagy jelzés állítja le. A Restart=always a tiszta kilépés után is újraindít. A kézi systemctl stop után viszont egyik sem indít újra. A RestartSec= alapértéke 100 ezredmásodperc.

Ha egy meglévő egységet módosítanál, ne a /usr/lib alatti fájlt szerkeszd. Készíts inkább felülíró .conf fájlt az /etc/systemd/system/pelda.service.d könyvtárban. A dokumentáció szerint az ilyen kiegészítések elsőbbséget élveznek. Az Ollama is systemd-szolgáltatásként fut, ahogy az Ollama telepítése Ubuntun útmutatóban láthatod.

 

Hogyan olvasod a naplókat a journalctl paranccsal?

A systemd naplóit a journalctl paranccsal olvasod. A -u kapcsoló egy adott egység üzeneteit mutatja, a -f pedig folyamatosan kiírja az újonnan érkező bejegyzéseket. A -b egy adott rendszerindítás üzeneteire szűr, a -p pedig az üzenetek fontossága szerint. Ezeket a kapcsolókat egymással is kombinálhatod.

A –since és a –until kapcsolóval időablakra szűrsz. Az -n a megjelenített bejegyzések számát korlátozza a legfrissebbekre. Az -e a lapozóban a napló végére ugrik.

Néhány hasznos példa:

journalctl -u pelda.service
journalctl -u pelda.service -f
journalctl -b -p err
journalctl --since today
journalctl --disk-usage

Tipikus hiba, hogy a napló észrevétlenül sok helyet foglal. A –disk-usage megmutatja a naplófájlok méretét. A –vacuum-time törli a megadott időnél régebbi archivált fájlokat. Törlés előtt gondold át, szükséged lehet-e még a régi bejegyzésekre.

Figyelem: a következő parancs véglegesen törli a két hétnél régebbi archivált naplókat:

sudo journalctl --vacuum-time=2weeks

 

Gyakran ismételt kérdések

Mi az a systemd röviden?

A systemd a Linux rendszer- és szolgáltatáskezelője. Ha PID 1 folyamatként fut, ő az init rendszer. Elindítja és felügyeli a felhasználói tér szolgáltatásait. Egységfájlokkal állítod be, hogy mi és mikor induljon.

 

Mi a különbség a systemd és a systemctl között?

A systemd maga a háttérben futó rendszer- és szolgáltatáskezelő. A systemctl az a parancs, amellyel utasításokat adsz neki. Vele indítod, állítod le és engedélyezed az egységeket. A két név tehát nem ugyanazt jelenti.

 

Mi a különbség az enable és a start között?

A start azonnal elindítja az egységet. Az enable csak azt állítja be, hogy az egység a rendszerindításkor elinduljon. A dokumentáció szerint az enable nem indítja el az egységet. A két műveletet az enable –now kapcsolóval egyszerre is elvégezheted.

 

Hogyan nézem meg, melyik szolgáltatás hibás?

A systemctl list-units –failed parancs csak a hibás egységeket listázza. Egy konkrét egység állapotát a systemctl status paranccsal kérdezed le. Ez a legutóbbi naplóbejegyzéseket is kiírja. A teljes naplót a journalctl -u paranccsal olvasod.

 

Mikor kell a daemon-reload parancs?

Akkor kell lefuttatnod, ha módosítottad vagy létrehoztad egy egység fájlját. A parancs újraolvassa az egységfájlokat, és újraépíti a függőségi fát. A reload ezzel szemben a szolgáltatás saját beállításait olvastatja újra. A kettőt ne tévesszd össze.

 

Hogyan ellenőrzöm, hogy egy szolgáltatás induláskor elindul-e?

Az is-enabled parancs megmondja, hogy az egység engedélyezett-e. Az is-active azt mutatja, hogy éppen fut-e. A két érték eltérhet egymástól. Egy engedélyezett szolgáltatás is lehet leállítva, ha közben kézzel megállítottad.

 

Van olyan Linux, amely nem használ systemd-t?

Igen, léteznek systemd nélküli disztribúciók is. Ilyen például a Void Linux. A legtöbb útmutató mégis systemd-re épül, ezért érdemes ismerned. Ha ilyen rendszert használsz, a szolgáltatáskezelés parancsai eltérhetnek.

 

Mit jelent a PID 1 a systemd esetében?

A PID 1 az első folyamat, amely a rendszerindításkor elindul. Ha a systemd fut ezen a néven, ő az init rendszer. Ő indítja el a többi szolgáltatást, és később felügyeli őket. A bejelentkezett felhasználókhoz külön felhasználói példány tartozik.

Szerző: a Linuxinfok szerkesztősége. Utolsó frissítés: 2026-10-30. A parancsok a hivatalos dokumentáció alapján készültek, futtatás előtt ellenőrizd az aktuális oldalt.

 

Források és referenciák