journalctl
journalctl legge il journal di systemd, cioè i log raccolti da systemd-journald: kernel, servizi, avvio del sistema e applicazioni.
Sintassi
journalctl [opzioni] [filtri]
Per leggere tutti i log servono i permessi di root oppure l'appartenenza al gruppo systemd-journal o adm.
Esempi base
Tutti i log, dal più vecchio:
journalctl
Dal più recente:
journalctl -r
Saltare direttamente alla fine:
journalctl -e
Seguire i log in tempo reale (come tail -f):
journalctl -f
Ultime 50 righe:
journalctl -n 50
Filtrare per servizio
journalctl -u nginx.service
journalctl -u nginx -u php-fpm
journalctl -u nginx -f
Filtrare per avvio (boot)
Log dell'avvio corrente:
journalctl -b
Avvio precedente (utile dopo un crash o un riavvio improvviso):
journalctl -b -1
Elenco degli avvii registrati:
journalctl --list-boots
Filtrare per tempo
journalctl --since "2026-10-24 08:00" --until "2026-10-24 12:00"
journalctl --since "1 hour ago"
journalctl --since yesterday
journalctl --since today
Filtrare per priorità
| Livello | Nome |
|---|---|
| 0 | emerg |
| 1 | alert |
| 2 | crit |
| 3 | err |
| 4 | warning |
| 5 | notice |
| 6 | info |
| 7 | debug |
journalctl -p err
journalctl -p warning..err
journalctl -b -p err
-p err mostra gli errori e i livelli più gravi.
Messaggi del kernel
journalctl -k
journalctl -k -b
Equivale a dmesg, ma con timestamp e storico.
Filtrare per altri campi
journalctl _UID=1000
journalctl _PID=1234
journalctl /usr/bin/sshd
journalctl -t sudo
Formato di output
journalctl -o short-iso
journalctl -o json-pretty
journalctl -o cat
-o cat stampa solo il messaggio, senza timestamp né nome host.
Per evitare che le righe lunghe vengano tagliate:
journalctl --no-pager
journalctl -u nginx --no-pager | less -S
Cercare un testo
journalctl -g "failed"
journalctl -u ssh -g "Failed password"
-g usa le espressioni regolari (grep integrato).
Gestire lo spazio occupato
Vedere quanto occupa il journal:
journalctl --disk-usage
Ridurlo:
sudo journalctl --vacuum-size=500M
sudo journalctl --vacuum-time=2weeks
Per rendere il limite permanente, modifica /etc/systemd/journald.conf:
[Journal]
SystemMaxUse=500M
Poi riavvia il servizio:
sudo systemctl restart systemd-journald
Rendere persistenti i log
Se /var/log/journal non esiste, i log vengono persi a ogni riavvio. Per conservarli:
sudo mkdir -p /var/log/journal
sudo systemctl restart systemd-journald
Casi d'uso tipici
Un servizio non parte:
systemctl status nome.service
journalctl -u nome.service -b -e
Tentativi di accesso SSH falliti:
journalctl -u ssh -g "Failed" --since today
Cosa è successo prima di un riavvio inatteso:
journalctl -b -1 -e