Comando journalctl in Linux: leggere e filtrare i log di systemd
journalctl cerca e legge i log di sistema e dei servizi conservati nel journal di systemd. Puoi selezionare un servizio, un avvio, un intervallo temporale o una priorità per concentrarti sui messaggi utili alla diagnosi.
Senza argomenti mostra le voci accessibili all'utente, a partire dalle più vecchie. -u seleziona un'unità, -b un avvio e -p una priorità. I filtri si combinano: un risultato vuoto può dipendere dalle condizioni scelte, dai permessi o dalla conservazione dei dati, non dall'assenza di problemi.
Sintassi di base
journalctl [opzioni] [filtri]
È uno schema: le parentesi indicano parti facoltative e non vanno digitate. I filtri possono essere opzioni come -u oppure corrispondenze di campi nel formato CAMPO=VALORE. Questa guida usa il journal di systemd; disponibilità delle opzioni e accesso ai dati dipendono dal sistema. Controlla man journalctl e la versione con journalctl --version.
Nel pager, normalmente less, scorri con le frecce e cerca con /testo; usa q per uscire. Le frecce destra e sinistra permettono di leggere parti di righe lunghe nascoste dal pager. --no-pager invia l'output direttamente al terminale.
Esempi di utilizzo
Leggere gli errori dell'avvio corrente
journalctl -b -p err
-b senza un identificatore sceglie l'avvio corrente. -p err include err e i livelli più gravi crit, alert ed emerg, cioè le priorità numeriche da 3 a 0. Se vuoi soltanto err, usa l'intervallo -p err..err. Si filtra la priorità registrata, non la parola «errore» nel testo; un'applicazione può registrare una diagnosi utile anche a un livello meno grave.
Consultare le voci recenti di un servizio
journalctl -u sshd.service -n 100
Sostituisci sshd.service con il nome effettivo; su alcune distribuzioni è ssh.service. Per individuarlo puoi usare la consultazione delle unità con systemctl. Il comando seleziona fino alle 100 voci più recenti corrispondenti all'unità, comprese le informazioni pertinenti emesse dal gestore sul servizio. Sono voci, non necessariamente 100 righe dello schermo: un messaggio può occupare più righe.
Senza -b, questa ricerca può includere più avvii conservati. Aggiungi -b se vuoi limitarla a quello corrente. Le voci selezionate sono normalmente presentate in ordine cronologico; -r inverte l'ordine.
Seguire il servizio in tempo reale
journalctl -u sshd.service -f
Mostra inizialmente le voci recenti, normalmente le ultime dieci, e poi quelle nuove man mano che arrivano. Termina con Ctrl+C. Per iniziare senza mostrare le voci precedenti puoi combinare -n 0 -f. Non vengono creati messaggi di prova né modificati i servizi: un'attesa senza output può semplicemente significare che non arrivano nuove voci corrispondenti.
Interpretare una voce del log
Questo comando mostra fino alle tre voci più recenti del servizio senza aprire il pager:
journalctl -u sshd.service -n 3 --no-pager
La singola riga seguente illustra il formato di una possibile voce. Non è un risultato misurato e non rappresenta necessariamente tutto l'output del comando:
Sep 28 09:00:00 web01 sshd[1234]: Server listening on 0.0.0.0 port 22.
La riga contiene data e ora, nome host (web01), identificatore del processo con PID (sshd[1234]) e messaggio. Dice che il processo ha registrato l'ascolto sulla porta indicata; da sola non prova che la connessione sia raggiungibile attraverso rete e firewall. Il formato breve non esplicita anno e fuso orario: per confronti tra macchine valuta -o short-full --utc, che mostra timestamp più completi in UTC, tempo universale coordinato.
Restringi l'indagine con --since '2026-09-28 09:00' e, se serve, --until. Una data senza indicazione di fuso viene interpretata secondo il fuso locale; --utc controlla la visualizzazione e non va inteso come una conversione automatica di ogni data di input. Per un riferimento inequivocabile puoi indicare il fuso nella data, per esempio --since '2026-09-28 09:00 UTC'. Osserva anche le voci immediatamente precedenti e successive per distinguere una causa dagli errori che ne derivano.
Per un avvio precedente, controlla prima journalctl --list-boots, poi usa il numero o l'ID conservato; -b -1 seleziona l'avvio precedente nell'insieme disponibile. Il journal non ricrea dati già eliminati o mai raccolti. Per i soli messaggi del kernel, -k implica normalmente l'avvio corrente salvo una diversa selezione esplicita; la fonte resta il journal, distinta dal buffer corrente letto da dmesg.
Opzioni principali
| Opzione | Effetto |
|---|---|
-u UNITÀ |
Seleziona le voci relative all'unità specificata. Usa il nome realmente installato. |
-b |
Limita all'avvio corrente; con un numero o ID sceglie un altro avvio disponibile. |
-n N |
Seleziona fino alle N voci più recenti, non un numero fisso di righe sullo schermo. |
-f |
Mostra le voci recenti e attende quelle nuove. Ctrl+C termina l'attesa. |
-p LIVELLO |
Include quel livello e quelli più gravi; un intervallo come err..err limita al solo livello indicato. |
--since ORA |
Seleziona a partire dall'istante indicato, incluso. --until imposta il limite finale, anch'esso incluso. |
Permessi, conservazione e condivisione
Un utente normale può vedere solo una parte dei log di sistema. L'accesso dipende da autorizzazioni e politica della distribuzione: leggi gli eventuali avvisi e usa sudo journalctl solo se sei autorizzato. Per i servizi del proprio gestore utente, --user -u NOME.service seleziona un ambito diverso dai servizi di sistema. Un elenco incompleto non dimostra che le voci mancanti non esistano.
La disponibilità degli avvii passati dipende da raccolta e conservazione. Storage=volatile usa dati sotto /run/log/journal, persi al riavvio; persistent usa normalmente /var/log/journal con le condizioni e i ripieghi descritti nel manuale journald.conf. Non dedurre la configurazione effettiva dai soli valori commentati nel file principale: possono intervenire impostazioni della distribuzione e drop-in.
La rotazione archivia i file e ne apre di nuovi; da sola non significa che i vecchi log siano stati cancellati. Limiti di conservazione, pulizia o eliminazione possono invece rimuoverli. --vacuum-size, --vacuum-time e --vacuum-files eliminano file di journal archiviati: non usarli durante una semplice consultazione. Prima di condividere output, controlla e oscura token, dati personali, percorsi e altri valori sensibili, conservando il contesto utile alla diagnosi.
Domande frequenti
Perché non vedo i log dell'avvio precedente?
Potrebbero non essere stati conservati su disco, essere stati eliminati oppure non essere accessibili al tuo utente. Parti da journalctl --list-boots e verifica i filtri, l'ambito e i permessi. Se i dati non sono più presenti, cambiare il filtro non li recupera; rendere persistente la raccolta futura non ricostruisce il passato.
Documentazione di riferimento
Il manuale journalctl di systemd descrive filtri, priorità, formati temporali e comandi di manutenzione. Confronta le opzioni con il manuale locale della versione installata.




