Tutorial sul comando Journalctl: guida completa e pratica

Ultimo aggiornamento: 16/10/2025
Autore: Isaac
  • Journalctl centralizza e filtra i log di systemd in base a ora, unità, priorità e altro ancora.
  • Consente output flessibili (JSON, ISO 8601, dettagliati) e monitoraggio in tempo reale.
  • Gestione dello spazio con vuoto e limiti in journald.conf per un controllo dettagliato.

Guida a Journalctl e systemd

quando lavori con Linux moderno, systemd e il suo giornale centralizzato Sono il pane quotidiano per capire cosa succede sulla macchina. Ed è qui che entra in gioco journalctl, il coltellino svizzero per interrogare, filtrare ed esportare quei log con una velocità e una precisione che non si possono ottenere con file piatti sparsi.

Questo tutorial riunisce, passo dopo passo, Tutte le funzionalità essenziali e avanzate di journalctl: da quando ho visto l'ultimo Boot, filtrare per servizio, utente o priorità, gestire lo spazio su disco, modificare i formati di output o esportare in JSON. Inoltre, vedrai come abilitare la immagazzinamento persistente, elenca gli avvii precedenti e spostati tra le finestre temporali con assoluta flessibilità.

Journalctl, systemd-journald e perché sono importanti

Nei sistemi con systemd, i messaggi provenienti dal kernel, dai servizi, da initrd e dai processi utente vengono raccolti in un journal binario gestito da systemd-journalA differenza di /var/log/syslog e simili, questo formato binario consente Ricerche veloci, filtraggio dei metadati e output versatili (ad esempio in stile JSON o syslog), il tutto da un unico punto di accesso: journalctl.

UEFI BIOS
Articolo correlato:
Come accedere e aggiornare le impostazioni del firmware (BIOS/UEFI) da Linux utilizzando systemctl e systemd

Prima di tutto: controlla il fuso orario

Poiché i record vengono visualizzati in ora locale per impostazione predefinita, è consigliabile convalidare prima il fuso orario con timedatectlPuoi elencare le zone disponibili con timedatectl list-timezones e cambiarlo con sudo timedatectl set-timezone ZONAPer controllare lo stato, Stati Uniti d'America timedatectl status e conferma che l'orologio locale è corretto.

Se sei interessato a lavorare in UTC, journalctl aggiunge il modificatore –utc per visualizzare timestamp universali quando ne hai bisogno. In questo modo non ci sono problemi nel confronto con i log. altri server o con dati di monitoraggio.

Per iniziare: visualizzazione, navigazione e spostamento nelle pagine

Senza argomenti, journalctl visualizza l'intero diario dalla voce più vecchia a quella più recente utilizzando una paginazione (solitamente meno). È possibile scorrere con le frecce e, se la linea è più lunga dello schermo, vedi il resto con la freccia a destraPer invertire l'ordine (prima i più recenti), aggiungi -r.

Se vuoi che la linea venga troncata invece di essere spostata lateralmente, usa --no-full; e per vedere assolutamente tutto (incluso caratteri non stampabili), aggiunge -aQuando si desidera elaborare l'output con altri strumenti, --no-pager disattiva il cercapersone e lascia l'output in stdout.

Esistono scorciatoie più pratiche per la vita di tutti i giorni: -e vai direttamente alla fine del diario per vedere gli ultimi avvenimenti e -x portato aggiungere spiegazioni utile alcuni messaggi (quando disponibili) per velocizzare la diagnosi.

Filtra per avvio del sistema

L'interruttore -b Ti mostra solo le voci del avvio corrente. Se si naviga attraverso più di un avvio, verranno visualizzate le linee "– Reboot –" che delimitano le sessioni. Per tornare a un avvio precedente, utilizzare journalctl -b -1; per cinque partenze fa, -b -5. Questo è l'ideale quando un problema si verifica solo dopo un riavvio o in sequenze di avvio specifiche.

  Il modo giusto per trasferire foto da iPhone a Mac

Se vuoi l'elenco delle partenze che il giornale conosce, journalctl --list-boots ne visualizzerà uno per riga con: offset relativo (0, -1, -2, …), ID_AVVIO e intervallo di tempo. È possibile effettuare la query per offset o ID assoluto: journalctl -b 0 o journalctl -b BOOT_ID.

Importante: per far sì che gli avvii precedenti persistano tra i riavvii, abilitare l'archiviazione persistente creando /var/log/journal (sudo mkdir -p /var/log/journal) o modifica /etc/systemd/journald.conf con Storage=persistentIn questo modo, i registri non andranno persi a ogni avvio.

Finestre temporali potenti

Per limitare nel tempo, utilizzare --since y --until con il formato AAAA-MM-GG HH: MM: SSSe si omette l'ora, si presume la mezzanotte; se si omette la data, si presume il giorno corrente. Ad esempio: journalctl --since "2024-12-01 09:00" --until "2024-12-01 12:00".

È possibile utilizzare anche espressioni relative: ieri, oggi, domani, adesso, o frasi come "1 hour ago"Un classico: journalctl --since 09:00 --until "1 hour ago" per visualizzare dalla prima ora all'ora precedente a quella corrente.

Filtra per servizio, processi, utenti e altro ancora

Il filtro più comune è per unità systemd: -u. Ad esempio, journalctl -u nginx.service Visualizza tutto ciò che riguarda il servizio nginx. È possibile combinare più unità per vedere come interagiscono. intervallando cronologicamente voci da, ad esempio, Nginx e PHP-FPM: journalctl -u nginx.service -u php-fpm.service --since today.

Per i servizi in esecuzione o non in esecuzione, è possibile elencare le unità con systemctl list-units -t service --all e scopri nomi esatti (utile nei sistemi con decine di servizi). In questo modo si evitano errori di battitura e si filtra solo ciò che è necessario.

Se conosci il PID, filtra per _PID: journalctl _PID=8088Per utenti e gruppi, utilizzare _UID y _GID: Per esempio, id -u www-data restituirà l'UID che potrai quindi utilizzare in journalctl _UID=33 --since today per vedi cosa è stato generato da quell'utente.

Il giornale indicizza automaticamente molti campi: eseguibile, comando, trasporto, struttura, ecc. Con journalctl -F CAMPO puoi elencare il valori diversi da un campo e quindi costruire filtri più accurati. Consultare man systemd.journal-fields per vedere il catalogo completo dei campi filtrabili.

Alcuni filtri molto utili: per percorso eseguibile (journalctl /usr/bin/bash), tramite la funzionalità in stile syslog (SYSLOG_FACILITY=3 corrisponde al demone), tramite ID di avvio (_BOOT_ID=...) o tramite trasporto (_TRANSPORT=kernel|stdout|journal|syslog|driver|audit) secondo L'origine del messaggio.

In alcuni casi è anche possibile filtrare per dispositivo, ad esempio per Rileva eventi USB in Linux oppure con journalctl /dev/sda, utile per individuare i messaggi relativi a immagazzinamento quando si sospettano I/O o settori danneggiati.

Messaggi del kernel ed equivalenti dmesg

Per vedere solo i messaggi del kernel che hai -k o --dmesgPer impostazione predefinita, sono limitati all'avvio corrente, ma è possibile combinarli con -b per altri stivali: journalctl -k -b -5 mostrerà il kernel di cinque avvii fa.

Questo filtro è molto utile per rilevare conflitti di driver, problemi di hardware o panico del kernel o eventi di basso livello che non compaiono nei servizi utente. È l'alternativa moderna al vecchio comando dmesg con contesto temporale e metadati.

  Come sfruttare la cronologia degli appunti in Windows 11

Priorità del registro: da 0 a 7 o per nome

Journalctl riconosce i livelli di priorità standard: 0 emergenza, 1 avviso, 2 critico, 3 errore, 4 avviso, 5 avviso, 6 informazione, 7 debug. È possibile filtrare con -p utilizzando il nome o il numero e per impostazione predefinita include il livello scelto e tutti quelli più severi.

Esempi: journalctl -p err -b (errore e massimo nell'avvio corrente) o journalctl -p 3Se vuoi restringere il campo intervallo esatto, usa il formato desde..hasta: ad esempio, solo avviso, errore e critico con journalctl -p warning..crit o in numeri journalctl -p 4..2.

Segui in tempo reale le ultime linee e ricerche

Per “ascoltare” il giornale in diretta, -f funziona come coda -fPerfetto quando si riavvia un servizio e si vuole vedere subito cosa produce. Se si preferisce un campionamento, -n mostra le ultime N righe (predefinite 10): journalctl -n, journalctl -n 20 o journalctl -n12 nella sua forma compatta.

Oltre al sempre utile pipe per grep, journalctl integra --grep per modelli di espressioni regolari direttamente nella query. Ad esempio, per individuare voci contenenti GnuPG: journalctl --grep GnuPG. In combinazione con il tempo, la guida o la priorità, la ricerca è chirurgico.

Formati di output ed esportazione

Con -o si modifica il formato di output. Hai short (stile syslog predefinito), short-iso (marca temporale ISO 8601), short-monotonic (segno monotono), short-precise (microsecondi) e verboso (mostra tutti i campi, compresi quelli interni).

Per le integrazioni, json y json-pretty sono ideali (quest'ultimo è più leggibile dall'uomo), e json-sse incapsula l'output per eventi inviati dal serverIl formato cat stampa solo il campo MESSAGE, utile per letture pulite, e export Viene utilizzato per trasferire o record di backup in binario.

Se si intende elaborare con altri strumenti, ricordarsi di combinare --no-pager e reindirizza: journalctl -b -u nginx -o json --no-pager > nginx.json o semplicemente journalctl > mensajes.log quando hai bisogno di uno scarico veloce.

Permessi e sicurezza

Per impostazione predefinita, ogni utente può eseguire query i propri recordPer vedere il sistema, è necessario essere radice o appartengono a gruppi come adm, wheel o systemd-journalCiò impedisce la fuga di informazioni sensibili e rispetta il principio di minimo privilegio.

Controllo dell'utilizzo del disco

Per misurare quanto spazio occupa il giornale: journalctl --disk-usage. Vedrai un riepilogo dei MiB/GiB consumati dai file di registro nell'archiviazione persistente e volatile, qualcosa di fondamentale per evitare le paure in piccole partizioni.

Se hai bisogno di ridurre o liberare spazio in LinuxSono disponibili tre strategie di svuotamento: in base alle dimensioni, al tempo e al numero di file. Esempi: sudo journalctl --vacuum-size=1G, sudo journalctl --vacuum-time=2weeks o sudo journalctl --vacuum-files=10 per preservare il più possibile 10 file archiviati.

Per impostare limiti permanenti, modifica /etc/systemd/journald.confI tasti più utili: SystemMaxUse= y RuntimeMaxUse= (limite totale su persistente e volatile), SystemKeepFree= y RuntimeKeepFree= (spazio da riservare nel FS), SystemMaxFileSize= y RuntimeMaxFileSize= (dimensione del file individuale) e SystemMaxFiles= y RuntimeMaxFiles= (numero massimo di file archiviati). Le dimensioni accettano i suffissi K, M, G, T, P, E.

Tieni presente che i limiti di dimensione del file guidano la rotazione per raggiungere il valore contrassegnato e che, per impostazione predefinita, se non configuri nulla, il journal di solito autolimitazione a circa il 10% del file system in cui risiede. Dopo aver modificato la configurazione, riavviare il servizio con sudo systemctl restart systemd-journald.

Ricette veloci e trucchi

Per visualizzare solo gli errori più gravi dell'ultimo avvio: journalctl -p err -bSe vuoi esattamente avvertimento, errore e critico: journalctl -p warning..crit o journalctl -p 4..2 per esprimerlo in numeri.

  Come interpretare i LED di debug della scheda madre e risolvere gli errori più comuni

Elenca tutti i valori in un campo e perfeziona i filtri: journalctl -F _GID (o -F _UID, -F _EXE, ecc.). È perfetto per scoprire ID reali prima di creare la query finale.

Separati per eseguibile o comando: journalctl _EXE=/usr/bin/sudo o journalctl _COMM=sudoSe è necessario isolare ciò che proviene dall'output dei servizi standard, filtrare per _TRANSPORT=stdout.

Filtra per host in ambienti con nome host condiviso: journalctl _HOSTNAME=debianE per richiedere biglietti a un utente specifico conoscendone l'UID: journalctl _UID=0 (radice) o il numero che corrisponde al tuo caso.

Hai bisogno di visualizzare solo i messaggi a livello "utente" dal syslog della struttura? journalctl SYSLOG_FACILITY=1 (e ricorda che 3 corrisponde a demone). Questi filtri aiutano a emulare le viste syslog classiche durante la migrazione a systemd.

Lavorando in UTC, ISO 8601 e precisione in microsecondi

Se hai sistemi in più zone o li confronti con le metriche, aggiungi --utc per standardizzare il tempo. Per formati chiari e ordinati, -o short-iso È un'ottima scelta; se sei interessato all'ordinamento monotono dell'orologio (per il debug di sequenze relative), -o short-monotonic è tuo amico.

Quando un incidente richiede la massima granularità, -o short-precise aggiunge microsecondi al timestamp. È una gemma quando si correla con tracce, profili o acquisizioni di rete.

Buone pratiche per l'uso quotidiano

Abilita la persistenza se ti interessa la cronologia: crea /var/log/journal o configurare Storage=persistent e riavvia journald. Se lavori con molta rotazione, definisci SystemMaxUse y SystemKeepFree in modo che non anneghi mai la partizione.

Per eseguire il debug dei servizi, combinare: -u servicio + -f + filtri di priorità e tempo. Aggiungi -x quando sospetti messaggi criptici; a volte fornisce indizi aggiuntivi che ti salvano minuti preziosi.

Nelle condutture e nelle esportazioni, utilizzare --no-pager e formati come json o export a seconda dello strumento di destinazione. Non dimenticare la sicurezza: limita l'accesso ai gruppi appropriati e controllare i permessi se condividi output che potrebbero contenere dati sensibili.

Padroneggiare journalctl cambia il modo in cui si comprende il sistema: con filtri per unità, PID, utente, priorità o tempo, con output avanzati e controllo dell'utilizzo del disco, Avrai sempre la storia precisa a portata di mano di ciò che sta accadendo. È uno strumento solido per monitorare, verificare e correggere in modo intelligente, senza perdersi in migliaia di righe.