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.

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.
| 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.

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.