systemctl je orodje ukazne vrstice upravitelja sistema in storitev systemd. V skoraj vseh sodobnih distribucijah Linux (AlmaLinux, Rocky Linux, CloudLinux, Ubuntu, Debian) z njim zaženeš, ustaviš in nadziraš storitve, ki tečejo v ozadju, na primer spletni strežnik, podatkovno bazo ali strežnik SSH. Za upravljanje storitev potrebuješ pravice root ali sudo, zato je ta članek namenjen tistim, ki upravljajo lasten VPS ali namenski strežnik.
Zagon, ustavitev, ponovni zagon
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
restart storitev ustavi in znova zažene, kar povzroči kratek izpad. reload le znova prebere nastavitve, brez prekinitve; tega ne podpira vsaka storitev, takrat je systemctl reload-or-restart zanesljiva izbira. Pred spremembo konfiguracije je dobro nastavitve preizkusiti z lastnim preverjevalnikom storitve (na primer nginx -t, apachectl configtest ali sshd -t), ker se storitev z napačno datoteko ne zažene znova.
Pripone .service ni treba izpisati, systemctl restart nginx in systemctl restart nginx.service pomenita isto.
Preverjanje stanja
systemctl status nginx
systemctl is-active nginx
systemctl --failed
status pokaže, ali storitev teče (active (running)), od kdaj, s katerim identifikatorjem procesa (PID), in izpiše tudi zadnje vnose v dnevnik. is-active odgovori z eno besedo, zato je uporaben v skriptih. systemctl --failed izpiše vse storitve v stanju napake.
Samodejni zagon ob zagonu sistema
sudo systemctl enable nginx
sudo systemctl enable --now nginx
sudo systemctl disable nginx
systemctl is-enabled nginx
enable nastavi, da se storitev po ponovnem zagonu strežnika samodejno zažene, same storitve pa ne zažene. enable --now jo v enem koraku vklopi in tudi zažene. disable izklopi samodejni zagon. Z ukazom mask je storitev mogoče popolnoma onemogočiti, tako da je ni mogoče zagnati niti ročno, dokler je ne sprostiš z unmask. V preizkusu je poskus zagona maskirane storitve vrnil: Failed to start crond.service: Unit crond.service is masked.
Pogosta imena storitev
Imena storitev se lahko med distribucijami razlikujejo:
| Storitev | AlmaLinux, Rocky Linux | Debian, Ubuntu |
|---|---|---|
| Spletni strežnik Apache | httpd |
apache2 |
| Podatkovna baza MariaDB | mariadb |
mariadb |
| Strežnik SSH | sshd |
ssh |
| Načrtovana opravila | crond |
cron |
| Požarni zid | firewalld |
ufw |
Na testnih računalnikih (cloud image AlmaLinux 10.2, Ubuntu 24.04, Debian 12) je bilo nekaj razlik:
- V Debianu deluje tudi ime
sshd, ker je vzdevek (alias)ssh.service. - V Ubuntu 24.04 SSH zažene aktivacija prek vtičnice:
ssh.serviceje v stanjudisabled, na vratih 22 poslušassh.socket, ki ob prvi povezavi zažene storitev. To je pomembno pri spremembi vrat SSH (glej: Varnostne nastavitve strežnika SSH). - V Ubuntuju je
ufwnameščen, a privzeto ni vklopljen; na cloud image Debian ni nitiufwnitifirewalld, tudicronni nameščen (sudo apt install cron).
Seznam vseh naloženih storitev da ukaz systemctl list-units --type=service. Več o SSH beri v našem članku Linux Secure Shell (SSH).
Kaj narediti, če se storitev ne zažene?
- Poglej izpis
systemctl status szolgaltatas: sporočilo o napaki je pogosto vidno že tu. - Poizvedi po celotnem dnevniku storitve:
journalctl -u szolgaltatas -n 50 --no-pager. O branju dnevnikov govori naš članek o journalctl in imeniku /var/log. - Pogosti vzroki: sintaktična napaka v konfiguracijski datoteki, vrata, ki jih že zaseda drug program (
ss -tlnppokaže, kaj posluša na določenih vratih), zmanjkalo prostora na disku ali napačna dovoljenja datotek. - Če si spremenil datoteko enote (
/etc/systemd/system/*.service), zaženi ukazsudo systemctl daemon-reload, sicer systemd še uporablja staro nastavitev.