Gym
lesson

Sistemski servisi (systemd)

Do sada smo gledali procese koje ti pokrećeš. Ali Linux stalno ima procese koji rade u pozadini, a nisi ih ti pokrenuo — web serveri, SSH, planeri zadataka. To su sistemski servisi.

U ovoj lekciji naučićeš kako ih pregledaš, pokrećeš i zaustavljaš.

Šta je sistemski servis?

Sistemski servis je proces koji:

  • radi u pozadini, bez terminala
  • sistem ga automatski pokreće pri boot-u
  • ne pripada tvojoj sesiji — nastaviće da radi i kad se odjaviš
  • sistem ga pamti između restartova (zna da ga pokrene sledeći put)

Primeri servisa:

Servis Opis
sshd SSH server — prima udaljene konekcije
nginx / apache2 Web server — služi web stranice
cron Planer zadataka — pokreće komande po rasporedu
NetworkManager Upravljanje mrežnim interfejsima

systemd

U većini modernih Linux distribucija, sistem za upravljanje servisima zove se systemd. Komanda za rad sa njim: systemctl.

systemd je proces sa PID-om 1 — roditelj svih ostalih procesa. On je odgovoran za pokretanje i praćenje svih servisa na sistemu.

Osnovne systemctl komande

Provera statusa servisa

systemctl status nginx
● nginx.service - A high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
     Active: active (running) since Mon 2024-01-15 10:23:45 UTC; 2h ago
    Process: 1234 ExecStart=/usr/sbin/nginx
   Main PID: 1234 (nginx)

Bitni delovi:

  • Active: active (running) — servis radi
  • Active: inactive (dead) — servis ne radi
  • enabled — pokreće se automatski pri boot-u
  • disabled — ne pokreće se automatski

Pokretanje i zaustavljanje

sudo systemctl start nginx      # Pokreni servis
sudo systemctl stop nginx       # Zaustavi servis
sudo systemctl restart nginx    # Zaustavi pa ponovo pokreni

Napomena: start, stop i restart zahtevaju sudo — menjaju stanje sistema. status i komande za pregled ne zahtevaju sudo.

Auto-start pri boot-u

sudo systemctl enable nginx     # Pokreni automatski pri boot-u
sudo systemctl disable nginx    # Ukloni iz auto-starta

enable i disable ne pokreću niti zaustavljaju servis odmah — samo utiču na to šta se desi pri sledećem boot-u.

Da istovremeno uključiš i odmah pokreneš:

sudo systemctl enable --now nginx

Pregled svih servisa

systemctl list-units --type=service
UNIT                   LOAD   ACTIVE SUB     DESCRIPTION
cron.service           loaded active running Regular background tasks
NetworkManager.service loaded active running Network Manager
nginx.service          loaded active running A high performance web server
ssh.service            loaded active running OpenBSD Secure Shell server

Filtriraj samo aktivne:

systemctl list-units --type=service --state=active

journalctl — gde su logovi

Svaki servis zapisuje šta radi u systemd journal. Komanda journalctl ti daje pristup tim logovima.

Logovi konkretnog servisa

journalctl -u nginx

Ispisuje celu istoriju logova za nginx.

Pratiti logove uživo

journalctl -u nginx -f

Kao tail -f — vidis nove poruke u realnom vremenu. Prekidaš sa Ctrl+C.

Samo greške

journalctl -p err

Prikazuje samo poruke sa nivoom greške (err) ili višim. Korisno za dijagnozu problema.

Logovi od poslednjeg boot-a

journalctl -b

Primer kompletnog toka rada

Recimo da hoćeš da pokreneš nginx web server i osiguraš da radi i posle restarta:

systemctl status nginx          # vidim da ne radi
sudo systemctl start nginx      # pokrecem
systemctl status nginx          # sad radi
sudo systemctl enable nginx     # da se startuje pri boot-u
journalctl -u nginx -f          # pratim log

Ako nešto ne radi kako treba:

journalctl -u nginx -p err      # pogledaj greske
sudo systemctl restart nginx    # restartuj

Rezime komandi

Komanda Opis
systemctl status SERVIS Proveri status (radi / ne radi)
sudo systemctl start SERVIS Pokreni servis
sudo systemctl stop SERVIS Zaustavi servis
sudo systemctl restart SERVIS Restartuj servis
sudo systemctl enable SERVIS Auto-start pri boot-u
sudo systemctl disable SERVIS Ukloni iz auto-starta
systemctl list-units --type=service Pregled svih servisa
journalctl -u SERVIS Logovi servisa
journalctl -u SERVIS -f Logovi uzivo
journalctl -p err Samo greske