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 radiActive: inactive (dead)— servis ne radienabled— pokreće se automatski pri boot-udisabled— 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,stopirestartzahtevajusudo— menjaju stanje sistema.statusi komande za pregled ne zahtevajusudo.
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 |