Salta al contenuto principale

Orvieto Linux User Group | Promozione software libero a Orvieto

journalctl: guida completa ai log di systemd su Linux

Quando un servizio non si avvia, il sistema si blocca durante il boot oppure un’applicazione smette improvvisamente di funzionare, la prima domanda da porsi è sempre la stessa:

Cosa è successo?

Per rispondere a questa domanda esistono i log di sistema.

Nelle moderne distribuzioni Linux basate su systemd, lo strumento principale per consultarli è journalctl.

Anche se inizialmente può sembrare complesso, journalctl rappresenta uno degli strumenti più utili per comprendere il comportamento del sistema operativo e individuare rapidamente eventuali problemi.

In questa guida vedremo come leggere i log, come filtrarli e quali sono i comandi più utili da conoscere.


Cos’è il journal di systemd?

Tradizionalmente Linux utilizzava diversi file di log separati all’interno della directory:

 
/var/log/
 

Con systemd è stato introdotto il journal, un sistema centralizzato che raccoglie gli eventi provenienti da:

  • kernel;
  • servizi;
  • processi di sistema;
  • applicazioni;
  • boot;
  • sessioni utente.

journalctl è il comando che permette di consultare queste informazioni.

In pratica possiamo immaginarlo come un motore di ricerca interno del sistema operativo.

 

Visualizzare tutti i log

Il comando più semplice è:

 
journalctl
 

Verranno mostrati tutti gli eventi registrati nel journal.

Su sistemi in funzione da molto tempo l’output potrebbe essere enorme.

Per questo motivo spesso si utilizza:

 
journalctl -e
 

che mostra direttamente la parte finale dei log.


Seguire i log in tempo reale

Se vogliamo osservare i log mentre vengono generati possiamo utilizzare:

 
journalctl -f
 

Il comportamento è simile al classico:

 
tail -f
 

Questo comando è particolarmente utile durante il debug di servizi e applicazioni.


Consultare i log di un servizio

Una delle funzionalità più utili è la possibilità di filtrare i log relativi a una specifica Unit.

Ad esempio:

 
journalctl -u sshd.service
 

oppure:

 
journalctl -u nginx.service
 

Questo approccio consente di concentrarsi esclusivamente sul servizio che si sta analizzando.

È probabilmente il comando che utilizzerai più spesso durante le attività di troubleshooting.


Visualizzare i log dell’ultimo avvio

Molti problemi si verificano durante il boot.

Per consultare soltanto i messaggi dell’avvio corrente possiamo utilizzare:

 
journalctl -b
 

Per visualizzare invece il boot precedente:

 
journalctl -b -1
 

Questa opzione è estremamente utile dopo un riavvio causato da un errore.


Mostrare soltanto gli errori

Se vogliamo visualizzare esclusivamente gli errori:

 
journalctl -p err
 

Per visualizzare anche gli avvisi:

 
journalctl -p warning
 

I livelli di priorità permettono di filtrare rapidamente gli eventi più importanti.


Cercare eventi in un intervallo temporale

Possiamo limitare la ricerca a uno specifico periodo.

Ad esempio:

 
journalctl --since "1 hour ago"
 

oppure:

 
journalctl --since today
 

o ancora:

 
journalctl --since yesterday
 

Questi filtri sono molto utili quando si conosce il momento in cui si è verificato il problema.


I comandi da ricordare

SituazioneComando
Tutti i logjournalctl
Ultimi logjournalctl -e
Tempo realejournalctl -f
Un servizio specificojournalctl -u nome-servizio
Boot correntejournalctl -b
Boot precedentejournalctl -b -1
Solo errorijournalctl -p err
Ultima orajournalctl --since "1 hour ago"

Perché imparare journalctl?

Molti problemi che sembrano misteriosi diventano immediatamente comprensibili dopo aver consultato i log.

Saper utilizzare journalctl significa:

  • risolvere più rapidamente gli errori;
  • comprendere il comportamento dei servizi;
  • analizzare i problemi di avvio;
  • individuare configurazioni errate;
  • ridurre drasticamente i tempi di troubleshooting.

È uno degli strumenti che separa il “provare a caso” dal “diagnosticare un problema”.


Conclusioni

journalctl è molto più di un semplice visualizzatore di log.

Rappresenta uno dei principali strumenti di diagnosi disponibili nei sistemi Linux moderni e costituisce una competenza fondamentale per amministratori di sistema, sviluppatori e utenti avanzati.

Non è necessario memorizzare subito tutte le opzioni disponibili. Nella pratica, pochi comandi consentono già di affrontare la maggior parte delle situazioni quotidiane.

Nel prossimo articolo vedremo come utilizzare i timer di systemd, una moderna alternativa a cron che permette di automatizzare attività periodiche integrandole completamente nel sistema.

LICENZA E CONDIZIONI D’USO

Questo How-to è rilasciato sotto licenza Creative Commons Attribution-NonCommercial 3.0 Italy

CONTATTI DELL’AUTORE

Marco Ciammella marco@orvietolinux.it

Orvieto Linux User Group info@orvietolinux.it