Hogyan indíthatok, állíthatok le vagy indíthatok újra szolgáltatásokat systemctl paranccsal?

Linux 2 perc olvasás

A systemctl a systemd rendszer- és szolgáltatáskezelő parancssori eszköze. A modern Linux disztribúciók szinte mindegyikén (AlmaLinux, Rocky Linux, CloudLinux, Ubuntu, Debian) ezzel indíthatók, állíthatók le és felügyelhetők a háttérben futó szolgáltatások, például a webszerver, az adatbázis vagy az SSH-kiszolgáló. A szolgáltatások kezeléséhez root vagy sudo jogosultság kell, ezért ez a cikk saját VPS-t vagy dedikált szervert üzemeltetőknek szól.

Indítás, leállítás, újraindítás

sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx

A restart leállítja és újraindítja a szolgáltatást, ami rövid kiesést okoz. A reload csak a beállításokat olvastatja be újra, megszakítás nélkül; ezt nem minden szolgáltatás támogatja, ilyenkor a systemctl reload-or-restart a biztos választás. Konfigurációmódosítás előtt érdemes a szolgáltatás saját ellenőrzőjével tesztelni a beállításokat (például nginx -t, apachectl configtest vagy sshd -t), mert egy hibás fájllal a szolgáltatás nem indul újra.

A .service utótagot nem kötelező kiírni, a systemctl restart nginx és a systemctl restart nginx.service ugyanazt jelenti.

Állapot ellenőrzése

systemctl status nginx
systemctl is-active nginx
systemctl --failed

A status megmutatja, hogy a szolgáltatás fut-e (active (running)), mióta, milyen folyamatazonosítóval (PID), és a legutóbbi naplóbejegyzéseket is kiírja. Az is-active egyetlen szóval válaszol, ezért szkriptekben hasznos. A systemctl --failed az összes hibás állapotú szolgáltatást listázza.

Automatikus indítás rendszerindításkor

sudo systemctl enable nginx
sudo systemctl enable --now nginx
sudo systemctl disable nginx
systemctl is-enabled nginx

Az enable beállítja, hogy a szolgáltatás a szerver újraindítása után automatikusan elinduljon, de magát a szolgáltatást nem indítja el. Az enable --now egy lépésben bekapcsolja és el is indítja. A disable kikapcsolja az automatikus indítást. A mask paranccsal egy szolgáltatás teljesen letiltható, így kézzel sem indítható el, amíg unmask-kal fel nem oldja. A teszten egy maszkolt szolgáltatás indítási kísérlete ezt adta: Failed to start crond.service: Unit crond.service is masked.

Gyakori szolgáltatásnevek

A szolgáltatások neve disztribúciónként eltérhet:

Szolgáltatás AlmaLinux, Rocky Linux Debian, Ubuntu
Apache webszerver httpd apache2
MariaDB adatbázis mariadb mariadb
SSH-kiszolgáló sshd ssh
Ütemezett feladatok crond cron
Tűzfal firewalld ufw

A tesztgépeken (AlmaLinux 10.2, Ubuntu 24.04, Debian 12 cloud image) néhány eltérés:

  • Debianon az sshd név is működik, mert az ssh.service álneve (alias).
  • Ubuntu 24.04-en az SSH-t socket-aktiválás indítja: a ssh.service disabled állapotú, a 22-es porton a ssh.socket figyel, és az első kapcsolódáskor indítja el a szolgáltatást. Ez az SSH port megváltoztatásánál számít (lásd: SSH szerver biztonsági beállításai).
  • Az Ubuntun az ufw telepítve van, de alapból nincs bekapcsolva; a Debian cloud image-én sem ufw, sem firewalld nincs, és a cron sincs telepítve (sudo apt install cron).

Az összes betöltött szolgáltatás listáját a systemctl list-units --type=service parancs adja meg. Az SSH-ról bővebben a Linux Secure Shell (SSH) cikkünkben olvashat.

Mit tegyen, ha egy szolgáltatás nem indul el?

  1. Nézze meg a systemctl status szolgaltatas kimenetét: a hibaüzenet gyakran már itt látszik.
  2. Kérdezze le a szolgáltatás teljes naplóját: journalctl -u szolgaltatas -n 50 --no-pager. A naplók olvasásáról a journalctl-t és a /var/log könyvtárat bemutató cikkünk szól.
  3. Gyakori okok: szintaktikai hiba a konfigurációs fájlban, egy másik program által már foglalt port (ss -tlnp mutatja, mi figyel az adott porton), elfogyott lemezhely vagy hibás fájljogosultság.
  4. Ha egy unit fájlt (/etc/systemd/system/*.service) módosított, futtassa le a sudo systemctl daemon-reload parancsot, különben a systemd még a régi beállítást használja.
Vissza: Linux leírások (62)