systemd logovi: journalctl jednostavnim jezikom
Kako da nađeš uzrok pada servisa u logu, filtriraš ono što ti treba po vremenu i nivou i sprečiš da logovi pojedu ceo disk.
Ažurirano 23. avgust 2026.
Skoro sve što se dešava na sistemu završi u systemd journal-u. Servis neće da se pokrene, mašina se sama restartovala, sajt vraća 502 — odgovor je obično već zapisan, samo treba da znaš kako da ga pitaš.
Pet komandi koje su dovoljne
journalctl -u nginx -n 50 --no-pager # last 50 lines of one service
journalctl -u nginx -f # follow in real time
journalctl -p err -b # only errors since boot
journalctl --since "10 min ago" # everything for the last ten minutes
journalctl -b -1 -e # previous boot log, end of file
Poslednja je posebno vredna posle naglog restarta: -b -1 otvara prethodnu sesiju, a na kraju možeš da vidiš da li je bio kernel panic, da li je radio OOM killer ili je bilo čisto gašenje.
Nivoi u -p: emerg, alert, crit, err, warning, notice, info, debug. Navedeni nivo uključuje i sve važnije.
Dijagnostika servisa koji ne radi
systemctl status myapp
journalctl -u myapp --since today -p warning
systemctl status daje izlazni kod i poslednje linije, journalctl daje celu sliku. Gledaj:
Main process exited, code=exited, status=1— aplikacija je sama izašla sa greškom, uzrok je u liniji iznad;Failed to start ... Permission denied— dozvole na fajlu, direktorijumu ili portu ispod 1024;Killed process ... (java) total-vm...od kernela — OOM killer je uskočio, pročitaj Nema dovoljno memorije;Start request repeated too quickly— servis je u petlji padanja, systemd je prestao da ga pokreće; otkloni uzrok i pokrenisystemctl reset-failed myapp.
Spisak svega pokvarenog na sistemu je systemctl --failed.
Filteri koji štede vreme
journalctl --since "2026-08-22 03:00" --until "2026-08-22 04:00"
journalctl -u nginx -u php-fpm # several services at once
journalctl _PID=1432 # by specific process
journalctl -k # only kernel messages
journalctl -u sshd | grep "Failed password" | tail -20
Kombinuj sa grep, ali zapamti: journalctl bez --no-pager otvara pager, izađi sa q.
Kako da journal ne pojede disk
Podrazumevano, journal raste do 10% particije. Na VDS-1 sa diskom od 40 GB, to je četiri gigabajta — primetno.
journalctl --disk-usage
journalctl --vacuum-size=200M
journalctl --vacuum-time=14d
Trajni limit je u /etc/systemd/journald.conf:
[Journal]
SystemMaxUse=300M
MaxRetentionSec=1month
Zatim systemctl restart systemd-journald.
Česte greške
- Čitanje journal-a bez
-u. Opšti tok je zatrpan zapisima servisa, a linija koja ti treba se izgubi. Uvek ga suzi na servis ili nivo. - Gubljenje istorije posle restarta. Ako direktorijum
/var/log/journalne postoji, journal živi samo u memoriji. Napravi ga:mkdir -p /var/log/journal && systemd-tmpfiles --create --prefix /var/log/journal. - Traženje grešaka aplikacije tamo. Nginx, PostgreSQL i slični takođe pišu u svoje fajlove u
/var/log. Ako je journal prazan, pogledaj tamo.
Kada je disk pun, journalctl može da odbije da radi dok se prostor ne oslobodi. Ta situacija je obrađena u članku Nema dovoljno prostora na disku.