Preskoči na vsebino

Nastavitve piškotkov

Za vsako vrsto izberite, katere piškotke dovolite. Svojo izbiro lahko kadar koli spremenite prek povezave Nastavitve piškotkov na dnu vsake strani. Izjava o zasebnosti

Nujni

Vedno vklopljeno

Potrebni so za prijavo, shranjevanje košarice in pomnjenje Vaših izbir. Vedno so vklopljeni.

Kateri piškotki?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša seja in ohranjanje prijave
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cen z DDV ali brez DDV
  • wok_cookies: Vaša izbira glede piškotkov, 12 mesecev

Meri, kateri oglas vodi do obiska ali naročila, da ne plačujemo za oglase, ki ne prinesejo ničesar.

Kateri piškotki?
  • Google Ads prek Google Tag Manager (_gcl_au, _gcl_aw), do 90 dni
  • OpenAI Ads, oglasi v ChatGPT
  • wok_aff: prek katerega partnerja ste prišli k nam (partnerski program), 60 dni

4,6

Država in jezik

Vsaka država ima svojo spletno stran, s cenami in DDV za to državo.

Prikaži

Upravljanje storitev s systemd

Modul 6: Storitve in dnevniki · Čas branja: 10 minut

Učni cilj: Po tej lekciji boste znali storitve zagnati, ustaviti, ponovno naložiti in nastaviti, da se zaženejo ob zagonu sistema, prebrati stanje storitve ter varno spremeniti nastavitev storitve z datoteko drop-in.

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

Kdo skrbi, da vse deluje?

Na strežniku teče na desetine programov, ki morajo biti vedno na voljo: strežnik SSH, spletni strežnik, podatkovna baza, sinhronizacija časa. Takšnim programom pravimo storitve (services ali daemons). Nekdo jih mora ob zagonu sistema zagnati, jih nadzorovati in jih znova zagnati, če se sesujejo. Na Debianu, Ubuntuju, AlmaLinuxu in Rocky Linuxu to počne systemd. To je prvi program, ki ga zažene jedro (proces 1), nato pa zažene vse ostalo.

systemd dela z enotami (units): opisi nečesa, kar mora upravljati. Najpomembnejše vrste:

VrstaKončnicaPrimer
Storitev.servicenginx.service, ssh.service
Časovnik (načrtovano opravilo).timerapt-daily.timer (lekcija 4.2, lekcija 6.3)
Vtičnica (socket).socketssh.socket na Ubuntuju 24.04 in novejših
Cilj (skupina enot).targetmulti-user.target

S systemd se pogovarjate prek ukaza systemctl. Končnico .service lahko izpustite: systemctl status nginx je isto kot systemctl status nginx.service.

Branje stanja

Ukaz, ki ga boste uporabljali najpogosteje:

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...

Berite ga od zgoraj navzdol:

  • Pikica pred imenom je zelena pri storitvi, ki teče, bela pri ustavljeni in rdeča pri neuspešni.
  • Loaded pove, kje je datoteka enote in ali se storitev zažene ob zagonu sistema (enabled) ali ne (disabled).
  • Active pove, ali storitev zdaj teče (active (running)), je ustavljena (inactive (dead)) ali ni uspela (failed), in od kdaj.
  • Main PID in CGroup pokažeta, kateri procesi spadajo k storitvi.
  • Spodaj so zadnje vrstice iz dnevnika storitve. Pogosto je tam že zapisano, zakaj gre kaj narobe; več preberete z journalctl (lekcija 6.2).

Zagon, ustavitev, ponovni zagon in ponovno nalaganje

anna@web1:~$ sudo systemctl start nginx      # zaženite zdaj
anna@web1:~$ sudo systemctl stop nginx       # ustavite zdaj
anna@web1:~$ sudo systemctl restart nginx    # ustavite in znova zaženite
anna@web1:~$ sudo systemctl reload nginx     # znova preberite konfiguracijo brez ustavitve

Razlika med restart in reload je v praksi pomembna. Pri ponovnem zagonu (restart) se storitev za trenutek ustavi: odprte povezave se prekinejo, in če nova konfiguracija vsebuje napako, se storitev ne zažene več in Vaše spletno mesto ne deluje. Pri ponovnem nalaganju (reload) storitev znova prebere svojo konfiguracijo, medtem ko teče naprej; pri napaki v konfiguraciji nginx obdrži staro. Za nginx, Caddy, SSH in fail2ban po spremembi konfiguracije zato uporabite reload in konfiguracijo najprej preizkusite (nginx -t, sshd -t, fail2ban-client -t). Vse storitve ne poznajo ukaza reload; systemctl reload-or-restart izbere sam.

Ob zagonu sistema: enable in disable

Zagon in "zagon ob zagonu sistema" sta dve različni stvari:

anna@web1:~$ sudo systemctl enable nginx         # odslej se zažene ob zagonu sistema
anna@web1:~$ sudo systemctl disable nginx        # ne zažene se več ob zagonu sistema
anna@web1:~$ sudo systemctl enable --now nginx   # oboje: zaženite zdaj in ob zagonu sistema
anna@web1:~$ systemctl is-enabled nginx
enabled

Klasična napaka: storitev zaženete z start, vse deluje, po naslednjem ponovnem zagonu strežnika (na primer zaradi posodobitve jedra, lekcija 4.2) pa je ni več. Za novo storitev zato uporabite enable --now.

Če želite biti prepričani, da se storitev nikoli ne zažene, tudi če jo zahteva druga storitev, obstaja mask: sudo systemctl mask <dienst>. To razveljavite z unmask.

Kaj je narobe?

En ukaz pokaže vse neuspešne enote:

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.

Naj Vam to postane navada, na primer po vsakem ponovnem zagonu in vsaki nadgradnji (lekcija 4.3): seznam mora biti prazen. Ko težavo odpravite, obvestilo odstranite z sudo systemctl reset-failed.

Pregled vseh storitev, ki tečejo:

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

Če teče nekaj, česar ne poznate ali ne uporabljate, ugotovite, kaj to je. Vsaka storitev, ki ni potrebna, je odvečna površina za napad (lekcija 5.1 in 10.1).

Datoteke enot in drop-in

Datoteka enote je besedilna datoteka. Različica iz paketa je v /usr/lib/systemd/system/ (na starejših sistemih /lib/systemd/system/). Te datoteke nikoli ne spreminjajte: posodobitev paketa jo prepiše. Lastne spremembe zapišite v drop-in: majhno datoteko, ki vsebuje le vrstice, ki jih želite spremeniti. Najlažje to naredite z:

anna@web1:~$ sudo systemctl edit nginx

Odpre se urejevalnik s praznim delom med dvema vrsticama s komentarjem. Kar tja zapišete, se shrani v /etc/systemd/system/nginx.service.d/override.conf. Na primer: nginx naj se samodejno znova zažene, če se nepričakovano ustavi.

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

Ko shranite, systemctl edit sam ponovno naloži konfiguracijo systemd. Če datoteko enote urejate drugače, to naredite sami:

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

daemon-reload poskrbi, da systemd znova prebere datoteke enot; storitev pa morate nato še ponovno zagnati, da začne uporabljati spremembo. Celoten rezultat (izvirnik in datoteke drop-in) vidite z systemctl cat nginx.

Restart=on-failure je dobra navada za pomembne storitve. Vendar z njim ne skrivajte prave napake: storitev, ki se vsakih pet sekund sesuje in znova zažene, je treba raziskati v dnevniku. systemd po nekaj hitrih zaporednih neuspehih preneha s ponovnimi zagoni (privzeta meja je pet zagonov v desetih sekundah) in storitev označi kot failed.

Na AlmaLinuxu in Rocky Linuxu

systemd in systemctl delujeta povsem enako. Le imena storitev se včasih razlikujejo: storitev SSH se imenuje sshd, spletni strežnik iz distribucije httpd (Apache) ali nginx, požarni zid pa firewalld.

V praksi

Zaslon VPS pri Vašem ponudniku (pri WebOké in drugod) lahko celoten strežnik izklopi, ponovno zažene ali "prisilno izklopi". Slednje je kot izvlek vtiča: storitve nimajo možnosti, da bi se pravilno ustavile, in podatkovna baza se lahko poškoduje. Znotraj strežnika uporabite sudo systemctl reboot ali sudo shutdown -h now, v nadzorni plošči pa običajni gumb za izklop ali ponovni zagon.

Povzetek

  • systemd zažene in nadzoruje vse storitve; upravljate ga z systemctl.
  • systemctl status pokaže, ali storitev teče, ali se zažene ob zagonu sistema, in zadnje vrstice dnevnika.
  • start/stop/restart veljajo za zdaj, enable/disable za zagon sistema; za novo storitev uporabite enable --now.
  • Po spremembi konfiguracije: najprej preizkus, nato reload; systemctl --failed mora biti prazen.
  • Datoteke enote iz paketa nikoli ne spreminjajte, temveč uporabite drop-in z systemctl edit.

Kviz

1. Novo storitev ste zagnali z systemctl start. Po ponovnem zagonu strežnika ne teče. Zakaj?



2. Spremenili ste konfiguracijo nginx. Kateri vrstni red je najvarnejši?



3. Kam spada Vaša lastna sprememba datoteke enote iz paketa?



4. systemctl status prikaže Loaded: loaded (...; disabled; ...) in Active: active (running). Kaj to pomeni?



5. Storitev ima Restart=on-failure in se sesuje vsakih nekaj sekund. Kako je ta nastavitev pravilno uporabljena?



Naloga

Naloga O6.1: Pregled Vaših storitev. Na svojem strežniku naredite seznam vseh storitev, ki tečejo (systemctl list-units --type=service --state=running), in preverite, ali je systemctl --failed prazen. Za vsako storitev navedite, kaj počne in ali jo potrebujete. Za eno storitev, ki je niste poznali, ugotovite, kaj je (systemctl status, man). Nato za eno pomembno storitev nastavite Restart=on-failure v datoteki drop-in in z systemctl cat preverite, da je nastavitev tam.

Naloga O6.1: Pregled Vaših storitev

To nalogo opravite sami; nihče je ne pregleda. Odkljukajte, kar ste naredili, in nalogo označite kot opravljeno.




Vaše kljukice in zapiski ostanejo samo v tem brskalniku, nikamor jih ne pošiljamo. Če ste prijavljeni, v Moji tečaji shranimo samo podatek, da ste nalogo opravili.

Za nadaljnje branje

Trenutek…

Nastavite svoje domene

Za vsako domeno uredite imenske strežnike, povezavo z gostovanjem in kdo bo imetnik.

Nalaganje Vaših domen…