Stai esaurendo lo spazio su disco su Linux? Controlla i tuoi registri!

Punti chiave

  • I log di sistema Linux possono occupare una notevole quantità di spazio su disco.
  • Il sistema normalmente comprimerà i file di registro più vecchi per risparmiare spazio su disco.
  • È possibile utilizzare il comando journalctl o tail -f per visualizzare i log e identificare i processi problematici.

Sebbene i sistemi Linux abbiano la reputazione di essere snelli, potresti scoprire che lo spazio su disco è improvvisamente esaurito. Perché è successo questo? L’indizio più grande, e forse il più grande colpevole, si troverà nei log del tuo sistema Linux.

Perché i log occupano così tanto spazio su disco?

I log sono una parte importante della gestione del tuo sistema Linux. Puoi vedere cosa sta succedendo al tuo computer e puoi anche risolvere i problemi che si presentano. I demoni di registrazione Linux sono simili al Visualizzatore eventi su Windows. I registri normalmente non occupano molto spazio. Questo perché la maggior parte delle distribuzioni gestirà automaticamente la quantità di spazio occupato sul disco.

I log di Linux sono storicamente file di testo semplice, ma con il passaggio di molte distribuzioni importanti a systemd, sono file binari gestiti da journald, un servizio di systemd. In alternativa, la tua distribuzione utilizzerà rsyslog o syslog-ng.

Poiché i vecchi registri non sono rilevanti e gli archivi di grandi dimensioni possono occupare spazio, il sistema in genere li “ruoterà” (archiviandoli, comprimendoli e infine eliminandoli) per risparmiare spazio su disco per le cose che desideri effettivamente.

Anche se potresti non pensare che i log occupino molto spazio, un processo malfunzionante può riempire i tuoi log più velocemente di quanto il sistema possa ruotarli.

Se controlli lo spazio su disco e ti ritrovi improvvisamente a corto di spazio e sai di non aver scaricato file di grandi dimensioni di recente, la causa potrebbe essere un problema con i log di sistema Linux. Dovrai scoprire cosa sta riempiendo i registri di sistema e risolverlo.

Puoi controllare quanto spazio su disco stai utilizzando con il comando du -h:

 du -h /var/log 

Vedrai un elenco di ciascuna sottodirectory, insieme alla quantità totale di spazio che occupa:

Trovare i tuoi registri

Se usi una moderna distribuzione Linux con systemd, utilizzerai il programma journalctl per visualizzare i tuoi log; journald in genere memorizza i log nelle directory /var/log/journal o /run/log/journal, a seconda della distribuzione.

Per visualizzare i log, digitare il comando journald al prompt della shell. Esistono altre utili opzioni della riga di comando. Per visualizzare i messaggi di avvio, utilizzare l’opzione -b:

 journalctl -b 

Puoi visualizzare i messaggi di registro del tuo sistema in tempo reale con l’opzione -f.

Se la tua distribuzione non utilizza systemd, troverai i log nella directory /var/log. Anche con systemd, alcuni programmi conservano ancora i propri log in questa directory. Si tratta di normali file di testo che puoi esaminare con un’utilità come un cercapersone, come less.

Ad esempio, per leggere il registro di sistema:

 less /var/log/syslog

Vedrai l’intero contenuto del file di registro che può contenere migliaia di righe:

Puoi anche monitorarlo in tempo reale con l’opzione -f del comando tail:

 tail -f /var/log/syslog

Come Linux ruota i file di registro

Nella directory /var/log potresti notare file con nomi che terminano con “log.N.gz”, dove N è un numero. Questo è il risultato della rotazione dei log più vecchi da parte del sistema. La maggior parte delle distribuzioni dispone di un’utilità che lo farà automaticamente, chiamata “logrotate”. logrotate è generalmente configurato per essere eseguito come processo cron o timer systemd.

Per impostazione predefinita, la maggior parte delle distribuzioni eseguirà logrotate quotidianamente. logrotate comprime i log più vecchi utilizzando gzip, come evidenziato dalle estensioni di file “.gz”. A tale scopo utilizza una soglia, come l’età o la dimensione del file, e un’altra soglia per eliminare eventualmente i vecchi file di registro.

Le opzioni predefinite per logrotate sono sufficienti per la maggior parte degli utenti desktop. Puoi modificare il comportamento di logrorate modificando il file /etc/logrotate.conf come superutente, nonché modificando i file cron o systemd timer del tuo sistema, ma queste operazioni sono in realtà rilevanti solo per gli amministratori del server.

Faresti meglio a correggere ciò che riempie i tuoi registri piuttosto che modificare i file di configurazione per risparmiare spazio su disco. Se dovete assolutamente modificare la configurazione potete leggere il pagina di manuale di logrotate.

Quali registri sono sicuri da eliminare?

Se tutto il resto fallisce e desideri disperatamente liberare spazio su disco, puoi eliminare manualmente i file di registro archiviati che terminano con “.gz” prima che lo faccia logrotate. Puoi usare rm, ma dovrai eseguirlo come superutente poiché questi file appartengono al sistema:

 sudo rm /var/syslog/syslog.*gz 

Questo comando eliminerà tutti i file contenenti “syslog”. e termina con “gz”.

Fai sempre molta attenzione quando esegui comandi tramite sudo, in particolare comandi distruttivi come rm!

Normalmente non dovresti eliminare i file nelle directory di sistema senza comprenderne appieno le implicazioni, ma i registri archiviati non causeranno alcun problema se mancano. In caso di problemi, potrebbe essere necessario fare riferimento ai registri più vecchi.

Come risolvere cosa riempie i tuoi registri

Il modo migliore per scoprire cosa sta riempiendo i tuoi log è seguire i log con le opzioni journalctl o tail -f. La soluzione migliore è ripetere i messaggi di errore.

Dovrai affrontare il processo offensivo per risparmiare spazio su disco. Se non sai cosa sta causando l’errore, puoi effettuare una ricerca sul Web o chiedere aiuto sui canali di supporto della tua distribuzione. Una volta risolto il problema, puoi eliminare i registri più vecchi in modo sicuro. Dovresti avere molto più spazio su disco ora.