Kako z ukazom systemctl zaženem, ustavim ali znova zaženem storitve?

Linux Branje: 2 min

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.service je v stanju disabled, na vratih 22 posluša ssh.socket, ki ob prvi povezavi zažene storitev. To je pomembno pri spremembi vrat SSH (glej: Varnostne nastavitve strežnika SSH).
  • V Ubuntuju je ufw nameščen, a privzeto ni vklopljen; na cloud image Debian ni niti ufw niti firewalld, tudi cron ni 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?

  1. Poglej izpis systemctl status szolgaltatas: sporočilo o napaki je pogosto vidno že tu.
  2. Poizvedi po celotnem dnevniku storitve: journalctl -u szolgaltatas -n 50 --no-pager. O branju dnevnikov govori naš članek o journalctl in imeniku /var/log.
  3. Pogosti vzroki: sintaktična napaka v konfiguracijski datoteki, vrata, ki jih že zaseda drug program (ss -tlnp pokaže, kaj posluša na določenih vratih), zmanjkalo prostora na disku ali napačna dovoljenja datotek.
  4. Če si spremenil datoteko enote (/etc/systemd/system/*.service), zaženi ukaz sudo systemctl daemon-reload, sicer systemd še uporablja staro nastavitev.
Nazaj: Linux – članki (76)