Ugrás a tartalomhoz

Sütibeállítások

Típusonként válassza ki, mely sütiket engedélyezi. Választását bármikor módosíthatja a Sütibeállítások linken, amely minden oldal alján megtalálható. Adatvédelmi nyilatkozat

Szükséges

Mindig bekapcsolva

A bejelentkezéshez, a kosár megőrzéséhez és a választásai megjegyzéséhez szükségesek. Ezek mindig be vannak kapcsolva.

Milyen sütik?
  • weboke_sessie, weboke_klant, weboke_remember: a munkamenet és a bejelentkezve maradás
  • weboke_basket: a kosár
  • wkBtwIncl: az árak megjelenítése ÁFÁ-val vagy anélkül
  • wok_cookies: a sütiválasztás, 12 hónap

Méri, melyik hirdetés vezet látogatáshoz vagy rendeléshez, hogy ne fizessünk hatástalan hirdetésekért.

Milyen sütik?
  • Google Ads a Google Tag Manageren keresztül (_gcl_au, _gcl_aw), legfeljebb 90 napig
  • OpenAI Ads, hirdetések a ChatGPT-ben
  • wok_aff: melyik partnerünk ajánlására érkezett (partnerprogram), 60 nap

4,6

Ország és nyelv

Minden országnak saját oldala van, az adott ország áraival és ÁFA-jával.

Megtekintés

Szolgáltatások kezelése a systemd segítségével

Modul 6: Szolgáltatások és naplók · Olvasási idő: 10 perc

Tanulási cél: A lecke végére Ön képes lesz szolgáltatásokat elindítani, leállítani, újratölteni és rendszerindításkor automatikusan elindíttatni, értelmezni egy szolgáltatás állapotát, valamint egy szolgáltatás beállítását biztonságosan módosítani egy drop-in fájllal.

Kulcsfogalmak: systemd, unit, service, systemctl, start, stop, restart, reload, enable, disable, --now, active, inactive, failed, systemctl --failed, drop-in, systemctl edit, daemon-reload, Restart=

Ki tartja életben az egészet?

Egy szerveren több tucat program fut, amelyeknek mindig elérhetőnek kell lenniük: az SSH-szerver, a webszerver, egy adatbázis, az időszinkronizálás. Ezeket a programokat szolgáltatásoknak (services vagy daemons) nevezzük. Valakinek rendszerindításkor el kell indítania, felügyelnie és újraindítania őket, ha leállnak. Debianon, Ubuntun, AlmaLinuxon és Rocky Linuxon ezt a systemd végzi. Ez az első program, amelyet a kernel elindít (1-es folyamat), és ezután ez indít el minden mást.

A systemd unitokkal dolgozik: ezek olyan leírások, amelyek megadják, mit kell kezelnie. A legfontosabb típusok:

TípusKiterjesztésPélda
Szolgáltatás.servicenginx.service, ssh.service
Időzítő (ütemezett feladat).timerapt-daily.timer (4.2. és 6.3. lecke)
Socket.socketssh.socket Ubuntu 24.04-en és újabbakon
Cél (unitok csoportja).targetmulti-user.target

A systemd-vel a systemctl paranccsal kommunikál. A .service kiterjesztés elhagyható: a systemctl status nginx ugyanaz, mint a systemctl status nginx.service.

Az állapot értelmezése

A leggyakrabban használt parancs:

anna@web1:~$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Mon 2026-11-09 08:12:44 CET; 3h 2min ago
       Docs: man:nginx(8)
    Process: 902 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 905 (nginx)
      Tasks: 3 (limit: 2275)
     Memory: 4.1M (peak: 6.3M)
        CPU: 213ms
     CGroup: /system.slice/nginx.service
             ├─905 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             └─906 "nginx: worker process"

nov 09 08:12:44 web1 systemd[1]: Starting nginx.service - A high performance web server...
nov 09 08:12:44 web1 systemd[1]: Started nginx.service - A high performance web server...

Olvassa fentről lefelé:

  • A név előtti pötty zöld, ha a szolgáltatás fut, fehér, ha le van állítva, és piros, ha hibára futott.
  • A Loaded sor megmutatja, hol található a unit-fájl, és hogy a szolgáltatás elindul-e rendszerindításkor (enabled) vagy sem (disabled).
  • Az Active sor megmutatja, hogy a szolgáltatás éppen fut (active (running)), le van állítva (inactive (dead)) vagy hibára futott (failed), és mióta.
  • A Main PID és a CGroup megmutatja, mely folyamatok tartoznak a szolgáltatáshoz.
  • Alul a szolgáltatás naplójának utolsó sorai láthatók. Gyakran már itt kiderül, mi a hiba oka; többet a journalctl paranccsal olvashat (6.2. lecke).

Indítás, leállítás, újraindítás és újratöltés

anna@web1:~$ sudo systemctl start nginx      # indítás most
anna@web1:~$ sudo systemctl stop nginx       # leállítás most
anna@web1:~$ sudo systemctl restart nginx    # leállítás és újraindítás
anna@web1:~$ sudo systemctl reload nginx     # konfiguráció újraolvasása leállítás nélkül

A restart és a reload közötti különbség a gyakorlatban fontos. Restartnál a szolgáltatás egy pillanatra leáll: a meglévő kapcsolatok megszakadnak, és ha az új konfiguráció hibás, a szolgáltatás nem indul el újra, így a webhelye elérhetetlenné válik. Reloadnál a szolgáltatás futás közben olvassa be újra a konfigurációját; konfigurációs hiba esetén az nginx megtartja a régit. Az nginx, a Caddy, az SSH és a fail2ban esetében tehát konfigurációmódosítás után a reload parancsot használja, és előtte tesztelje a konfigurációt (nginx -t, sshd -t, fail2ban-client -t). Nem minden szolgáltatás ismeri a reloadot; a systemctl reload-or-restart maga dönt.

Rendszerindításkor: enable és disable

Az indítás és a „rendszerindításkor való indítás” két különböző dolog:

anna@web1:~$ sudo systemctl enable nginx         # ezentúl rendszerindításkor elindul
anna@web1:~$ sudo systemctl disable nginx        # rendszerindításkor többé nem indul el
anna@web1:~$ sudo systemctl enable --now nginx   # mindkettő: indítás most és rendszerindításkor is
anna@web1:~$ systemctl is-enabled nginx
enabled

Klasszikus hiba: elindít egy szolgáltatást a start paranccsal, minden működik, majd a következő újraindítás után (például egy kernelfrissítés miatt, 4.2. lecke) a szolgáltatás eltűnik. Új szolgáltatáshoz ezért a enable --now parancsot használja.

Ha biztosra akar menni, hogy egy szolgáltatás soha ne induljon el, akkor sem, ha egy másik szolgáltatás igényli, erre szolgál a mask: sudo systemctl mask <dienst>. Visszavonás: unmask.

Mi a hiba?

Egyetlen parancs megmutatja az összes hibára futott unitot:

anna@web1:~$ systemctl --failed
  UNIT                LOAD   ACTIVE SUB    DESCRIPTION
● php8.4-fpm.service  loaded failed failed The PHP 8.4 FastCGI Process Manager

1 loaded units listed.

Tegye ezt szokássá, például minden újraindítás és minden frissítés után (4.3. lecke): a listának üresnek kell lennie. A hiba elhárítása után a jelzést a sudo systemctl reset-failed paranccsal törölheti.

Az összes futó szolgáltatás áttekintése:

anna@web1:~$ systemctl list-units --type=service --state=running

Ha fut valami, amit nem ismer vagy nem használ, derítse ki, mi az. Minden szükségtelen szolgáltatás felesleges támadási felületet jelent (5.1. és 10.1. lecke).

Unit-fájlok és drop-in fájlok

A unit-fájl egy szöveges fájl. A csomag által telepített változat a /usr/lib/systemd/system/ könyvtárban található (régebbi rendszereken a /lib/systemd/system/ könyvtárban). Ezt soha ne módosítsa: a csomag frissítése felülírja. A saját módosításait egy drop-in fájlba írja: ez egy kis fájl, amely csak azokat a sorokat tartalmazza, amelyeket meg szeretne változtatni. Ez a legegyszerűbben így megy:

anna@web1:~$ sudo systemctl edit nginx

Megnyílik egy szerkesztő, benne két megjegyzéssor között egy üres résszel. Amit oda ír, az a /etc/systemd/system/nginx.service.d/override.conf fájlba kerül. Például: az nginx automatikus újraindítása, ha váratlanul leáll.

[Service]
Restart=on-failure
RestartSec=5s

Mentés után a systemctl edit automatikusan újratölti a systemd konfigurációját. Ha egy unit-fájlt más módon szerkeszt, akkor ezt Önnek kell megtennie:

anna@web1:~$ sudo systemctl daemon-reload
anna@web1:~$ sudo systemctl restart nginx

A daemon-reload újraolvastatja a systemd-vel a unit-fájlokat; magát a szolgáltatást ezután még újra kell indítani, hogy a módosítás érvénybe lépjen. A teljes eredményt (az eredeti fájl és a drop-in fájlok együtt) a systemctl cat nginx paranccsal tekintheti meg.

A Restart=on-failure jó gyakorlat a fontos szolgáltatásoknál. Valódi hibát azonban ne rejtsen el vele: egy ötmásodpercenként összeomló és újrainduló szolgáltatás okát a naplóban kell megkeresni. A systemd néhány gyors egymás utáni hiba után abbahagyja az újraindítást (az alapértelmezett határ öt indítás tíz másodpercen belül), és a szolgáltatást failed állapotba teszi.

AlmaLinuxon és Rocky Linuxon

A systemd és a systemctl pontosan ugyanígy működik. Csak a szolgáltatások neve tér el néha: az SSH-szolgáltatás neve sshd, a disztribúció webszervere httpd (Apache) vagy nginx, a tűzfal pedig firewalld.

A gyakorlatban

A szolgáltató VPS-felülete (a WebOkénál és máshol is) képes a teljes szervert leállítani, újraindítani vagy „kényszerítetten leállítani”. Ez utóbbi olyan, mintha kihúzná a tápkábelt: a szolgáltatások nem kapnak lehetőséget a szabályos leállásra, és egy adatbázis ilyenkor megsérülhet. A szerveren belül a sudo systemctl reboot vagy a sudo shutdown -h now parancsot használja, a panelen pedig a szokásos leállítás vagy újraindítás gombot.

Összefoglalás

  • A systemd indítja és felügyeli az összes szolgáltatást; a systemctl paranccsal kezelheti.
  • A systemctl status megmutatja, hogy egy szolgáltatás fut-e, elindul-e rendszerindításkor, valamint az utolsó naplósorokat.
  • A start/stop/restart a pillanatnyi állapotra vonatkozik, a enable/disable a rendszerindításra; új szolgáltatáshoz a enable --now parancsot használja.
  • Konfigurációmódosítás után: először teszt, aztán reload; a systemctl --failed kimenetének üresnek kell lennie.
  • Soha ne módosítsa egy csomag unit-fájlját, hanem használjon drop-in fájlt a systemctl edit segítségével.

Kvíz

1. Elindított egy új szolgáltatást a systemctl start paranccsal. A szerver újraindítása után nem fut. Miért?



2. Módosította az nginx konfigurációját. Mi a legbiztonságosabb sorrend?



3. Hová kerüljön egy csomag unit-fájljának saját módosítása?



4. A systemctl status kimenetében Loaded: loaded (...; disabled; ...) és Active: active (running) látható. Mit jelent ez?



5. Egy szolgáltatásnál be van állítva a Restart=on-failure, és néhány másodpercenként összeomlik. Mi ennek a beállításnak a helyes használata?



Feladat

Feladat O6.1: Az Ön szolgáltatásainak feltérképezése. Készítsen listát a szerverén futó összes szolgáltatásról (systemctl list-units --type=service --state=running), és ellenőrizze, hogy a systemctl --failed kimenete üres-e. Minden szolgáltatásnál írja le, mit csinál, és szüksége van-e rá. Egy olyan szolgáltatásnál, amelyet eddig nem ismert, derítse ki, mi az (systemctl status, man). Ezután egy fontos szolgáltatásnál állítsa be a Restart=on-failure opciót egy drop-in fájlban, és a systemctl cat paranccsal ellenőrizze, hogy szerepel benne.

O6.1. feladat: Az Ön szolgáltatásainak feltérképezése

Ezt a feladatot saját maga végzi el, senki nem ellenőrzi. Pipálja ki, amit elvégzett, és jelölje meg a feladatot elvégzettként.




A pipái és jegyzetei csak ebben a böngészőben maradnak meg, sehova nem küldjük el őket. Ha bejelentkezett, a Fiókomban csak azt tároljuk, hogy elvégezte a feladatot.

További olvasnivaló

Egy pillanat…

Domainek beállítása

Állítsa be domainenként a névszervereket, a tárhelyhez való kapcsolást és azt, hogy ki legyen a tulajdonos.

Domainek betöltése…