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 è:
journalctlVerranno 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 -eche mostra direttamente la parte finale dei log.
Seguire i log in tempo reale
Se vogliamo osservare i log mentre vengono generati possiamo utilizzare:
journalctl -fIl comportamento è simile al classico:
tail -fQuesto 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.serviceoppure:
journalctl -u nginx.serviceQuesto 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 -bPer visualizzare invece il boot precedente:
journalctl -b -1Questa opzione è estremamente utile dopo un riavvio causato da un errore.
Mostrare soltanto gli errori
Se vogliamo visualizzare esclusivamente gli errori:
journalctl -p errPer visualizzare anche gli avvisi:
journalctl -p warningI 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 todayo ancora:
journalctl --since yesterdayQuesti filtri sono molto utili quando si conosce il momento in cui si è verificato il problema.
I comandi da ricordare
| Situazione | Comando |
|---|---|
| Tutti i log | journalctl |
| Ultimi log | journalctl -e |
| Tempo reale | journalctl -f |
| Un servizio specifico | journalctl -u nome-servizio |
| Boot corrente | journalctl -b |
| Boot precedente | journalctl -b -1 |
| Solo errori | journalctl -p err |
| Ultima ora | journalctl --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