Branje dnevniških datotek v Linuxu: journalctl in imenik /var/log

Linux Branje: 3 min

Če se storitev ne zažene, spletna stran vrne napako ali na strežniku opaziš kaj nenavadnega, odgovor skoraj vedno najdeš v dnevniških datotekah (logih). V sodobnih sistemih Linux se dnevniki zbirajo na dveh mestih: v dnevniku systemd, ki ga bereš z ukazom journalctl, in v besedilnih datotekah imenika /var/log.

Večino dnevnikov je mogoče brati le kot uporabnik root ali s sudo.

Dnevnik systemd: journalctl

journalctl na enem mestu pokaže vsa sporočila sistema in storitev, ki jih upravlja systemd. Najuporabnejša stikala:

# Dnevnik storitve (npr. spletni strežnik, SSH, podatkovna baza)
sudo journalctl -u httpd
sudo journalctl -u sshd
sudo journalctl -u mariadb

# Le zadnjih 100 vrstic
sudo journalctl -u httpd -n 100

# Neprekinjeno spremljanje (izhod: Ctrl+C)
sudo journalctl -u httpd -f

# Po obdobju
sudo journalctl --since "1 hour ago"
sudo journalctl --since "2026-10-20 08:00" --until "2026-10-20 09:00"

# Le napake in hujša sporočila
sudo journalctl -p err

# Od trenutnega oziroma prejšnjega zagona sistema
sudo journalctl -b
sudo journalctl -b -1

# Sporočila jedra (npr. pomanjkanje pomnilnika, napake diska)
sudo journalctl -k

Stikala je mogoče kombinirati, na primer sudo journalctl -u nginx -p err --since today.

journalctl izpis prikaže po straneh: s preslednico listaš, za / vpišeš iskalni niz, s tipko q pa končaš.

Ali dnevniki ostanejo po ponovnem zagonu?

Če journalctl --list-boots kaže le en zagon sistema, se dnevnik hrani samo v pomnilniku in se ob ponovnem zagonu izgubi. Na cloud image AlmaLinux 10 je bilo v preizkusu tako: imenika /var/log/journal ni bilo in tudi po več ponovnih zagonih je bil viden le trenutni zagon. Vklop trajnega shranjevanja:

sudo mkdir -p /var/log/journal
sudo systemctl restart systemd-journald

Od tedaj se dnevnik zapisuje na disk; vnosi prejšnjih zagonov vanj ne pridejo. V preizkusu je po naslednjem ponovnem zagonu --list-boots že kazal dva zagona, journalctl -b -1 pa je izpisal tudi dnevnik prejšnjega zagona.

Prostor, ki ga zaseda dnevnik, preveriš z ukazom journalctl --disk-usage in ga lahko zmanjšaš na primer na 500 MB:

sudo journalctl --vacuum-size=500M

Imenik /var/log

Veliko storitev (predvsem spletni strežniki in pošta) piše v lastno besedilno dnevniško datoteko. Najpogostejše:

Dnevnik AlmaLinux, Rocky Linux Ubuntu, Debian
Splošni sistemski dnevnik /var/log/messages /var/log/syslog
Prijave, SSH, sudo /var/log/secure /var/log/auth.log
Dnevnik napak Apache /var/log/httpd/error_log /var/log/apache2/error.log
Dnevnik dostopov Apache /var/log/httpd/access_log /var/log/apache2/access.log
Nginx /var/log/nginx/error.log, access.log /var/log/nginx/error.log, access.log
E-pošta /var/log/maillog /var/log/mail.log
Upravitelj paketov /var/log/dnf.log /var/log/apt/history.log

Od Debiana 12 rsyslog privzeto ni nameščen, zato /var/log/syslog in /var/log/auth.log morda manjkata; takrat ista sporočila bereš z ukazom journalctl. V preizkusu na cloud image Debian 12 ni bilo nobene od datotek, na Ubuntu 24.04 in AlmaLinux 10 pa teče rsyslog, zato tam nastanejo tudi besedilni dnevniki.

Na strežniku cPanel je dnevnik napak Apache v datoteki /etc/apache2/logs/error_log, dnevnik pošte (Exim) pa v /var/log/exim_mainlog. Za razlago sporočil Exim glej: Razlaga različnih statusnih kod exim.

Branje dnevniških datotek z ukazi tail, less in grep

# Zadnjih 50 vrstic
sudo tail -n 50 /var/log/httpd/error_log

# Neprekinjeno spremljanje: nove vrstice se prikažejo takoj (izhod: Ctrl+C)
sudo tail -f /var/log/httpd/error_log

# Po straneh, z začetkom na koncu datoteke
sudo less +G /var/log/messages

# Iskanje izraza
sudo grep "Failed password" /var/log/secure
sudo grep -i "example.hu" /var/log/httpd/access_log

Pri iskanju napak je pogosto najpreprosteje, da v terminalu dnevnik spremljaš s tail -f, v brskalniku pa medtem znova naložiš stran z napako: pripadajoča vrstica se prikaže takoj. O prikazu vrstic pred zadetkom in za njim beri v članku Grep: prikaz vrstic pred zadetkom in za njim.

Starejši, stisnjeni dnevniki

logrotate dnevniške datoteke redno (običajno tedensko) zaključi in arhivira, zato so starejši vnosi v datotekah .1, .2.gz ali z datumom (npr. messages-20261019). V AlmaLinux in Rocky Linux je značilno ime z datumom, brez stiskanja (v datoteki /etc/logrotate.conf je compress zakomentiran), v Debianu in Ubuntuju pa oštevilčeno, stisnjeno z .gz. V stisnjenih datotekah iščeš z ukazoma zgrep in zless, brez razpakiranja:

sudo zgrep "Out of memory" /var/log/messages-*

Če je dnevniška datoteka prerasla in napolnila disk, ti pomaga naš članek o iskanju in odstranjevanju velikih datotek error_log.

Nazaj: Linux – članki (76)