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
sshdnév is működik, mert azssh.serviceálneve (alias). - Ubuntu 24.04-en az SSH-t socket-aktiválás indítja: a
ssh.servicedisabledállapotú, a 22-es porton assh.socketfigyel, é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
ufwtelepítve van, de alapból nincs bekapcsolva; a Debian cloud image-én semufw, semfirewalldnincs, és acronsincs 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?
- Nézze meg a
systemctl status szolgaltataskimenetét: a hibaüzenet gyakran már itt látszik. - 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. - Gyakori okok: szintaktikai hiba a konfigurációs fájlban, egy másik program által már foglalt port (
ss -tlnpmutatja, mi figyel az adott porton), elfogyott lemezhely vagy hibás fájljogosultság. - Ha egy unit fájlt (
/etc/systemd/system/*.service) módosított, futtassa le asudo systemctl daemon-reloadparancsot, különben a systemd még a régi beállítást használja.