Ricerca nel sito web

Risoluzione dei problemi di Linux: 5 problemi comuni e come risolverli


Linux è un sistema operativo potente e affidabile, ma anche gli utenti esperti riscontrano problemi imprevisti. Che si tratti di un file eliminato, di una password di root dimenticata o di un sistema lento, sapere come risolvere i problemi in modo efficiente è la chiave per diventare un vero esperto di Linux.

Questa guida presenta scenari reali di risoluzione dei problemi di Linux insieme a soluzioni dettagliate, comuni tra gli amministratori di sistema, gli sviluppatori e gli utenti Linux di tutti i giorni.

Scenario 1: hai eliminato accidentalmente un file importante

Hai cancellato accidentalmente un file importante usando il comando rm e ora devi recuperarlo. A differenza di Windows e macOS, Linux non dispone di un "Cestino" integrato per i file eliminati dal terminale.

Le opzioni di ripristino dipendono dal file system in uso.

Per i filesystem EXT3/EXT4

Usa extundelete, che è un'utilità open source progettata per recuperare i file cancellati dai file system ext3 ed ext4 in Linux.

sudo apt install extundelete  # Debian-based  
sudo yum install extundelete  # RHEL-based  

Prima di tentare il ripristino, smontare la partizione per evitare ulteriori scritture che potrebbero sovrascrivere i dati eliminati:

sudo umount /dev/sdX

Quindi, esegui il seguente comando per recuperare il file eliminato e assicurati di sostituire /dev/sdX con la partizione effettiva in cui il file è stato eliminato.

sudo extundelete /dev/sdX --restore-all

Per i file system XFS, Btrfs o NTFS

Se il sistema utilizza XFS, Btrfs o NTFS, lo strumento testdisk è un'opzione migliore.

sudo apt install testdisk  # Debian-based  
sudo yum install testdisk  # RHEL-based  

Esegui testdisk e segui le istruzioni interattive per ripristinare i file persi.

sudo testdisk

Suggerimenti per la prevenzione:

    • Usa trash-cli: invece di rm, usa trash-cli per inviare i file a un cestino recuperabile.
sudo apt install trash-cli  
trash-put myfile.txt  
  • Abilita backup regolari: imposta rsync o Timeshift per eseguire automaticamente il backup dei file importanti.

Scenario 2: Recupero di una password root dimenticata

Hai dimenticato la password di root e non puoi eseguire attività amministrative, il che significa che non puoi installare software, modificare le impostazioni di sistema o accedere a file critici.

È possibile reimpostare la password di root avviando la modalità di ripristino o modificando il bootloader GRUB.

Utilizzo della modalità di ripristino (Ubuntu/Debian)

Innanzitutto, riavvia il sistema e tieni premuto Maiusc durante l'avvio per accedere al menu di GRUB, quindi seleziona "Opzioni avanzate" → "Modalità di ripristino" e scegli "Passa al prompt della shell di root".

Qui, rimonta il filesystem di root come scrivibile e reimposta la password di root.

mount -o remount,rw /
passwd root

Riavvia il sistema.

reboot

Utilizzo di rd.break (RHEL/CentOS/Fedora)

Innanzitutto, riavvia il sistema, premi e nel menu GRUB e trova la riga che inizia con linux e aggiungi rd.break alla fine.

Quindi, monta il filesystem di root e reimposta la password di root.

mount -o remount,rw /sysroot  
chroot /sysroot  
passwd root  

Infine, esci e riavvia.

exit  
reboot  

Suggerimenti per la prevenzione:

  • Crea un utente sudo senza password per evitare di essere bloccato dall'accesso root.
  • Utilizza le chiavi SSH invece delle password per l'autenticazione.

Scenario 3: è stato installato un pacchetto, ma non funziona

Hai installato un pacchetto, ma dice "comando non trovato" quando provi a eseguirlo, cosa che di solito accade quando il binario non è nel PATH del tuo sistema, il pacchetto non è installato correttamente o c'è una dipendenza mancante.

La soluzione è che prima devi verificare che il pacchetto sia installato o meno.

dpkg -l | grep package-name  # Debian-based  
rpm -qa | grep package-name  # RHEL-based  

Se manca, reinstallalo:

sudo apt install package-name  
sudo yum install package-name  

Quindi, controlla se il comando è nel PATH del tuo sistema.

which package-name  
echo $PATH

Se il file binario si trova in una posizione non standard, aggiungerlo a PATH:

export PATH=$PATH:/usr/local/bin  

Suggerimenti per la prevenzione:

  • Riavvia il terminale o esegui hash -r dopo aver installato nuovi pacchetti.
  • Usa gestori di pacchetti come Snap o Flatpak, che gestiscono meglio le dipendenze.

Scenario 4: il sistema sta esaurendo lo spazio su disco

Il sistema visualizza un errore "Nessuno spazio rimasto sul dispositivo", impedendo gli aggiornamenti software, la registrazione e le normali operazioni.

Ecco come recuperare spazio su disco e mantenere il sistema in funzione senza intoppi.

Passaggio 1: controlla l'utilizzo del disco

La soluzione è che per prima cosa devi controllare quanto spazio viene utilizzato su ciascuna partizione del tuo sistema usando il comando df.

df -h

Passaggio 2: trova ed elimina file di grandi dimensioni

Quindi, individua i file più grandi che occupano spazio eseguendo du comando, che eseguirà la scansione del tuo sistema ed elencherà i primi 10 file o directory più grandi. Elimina i file non necessari utilizzando rm o spostali su un'unità esterna.

du -ah / | sort -rh | head -10

Passaggio 3: rimuovere i registri non necessari

I registri sono essenziali per la risoluzione dei problemi e il monitoraggio dell'attività del sistema, ma possono crescere rapidamente e consumare una notevole quantità di spazio su disco.

Nel corso del tempo, i vecchi registri potrebbero non essere più necessari, rendendoli i principali candidati per la pulizia.

sudo journalctl --vacuum-time=2d  # Deletes logs older than 2 days  
sudo apt autoclean                # Removes outdated package files  

Passaggio 4: rimuovere i vecchi kernel (Ubuntu/Debian)

Quando aggiorni il tuo sistema, specialmente su Ubuntu o distribuzioni basate su Debian, vengono spesso installate nuove versioni del kernel Linux.

Tuttavia, i vecchi kernel non vengono rimossi automaticamente e, nel tempo, questi vecchi kernel possono accumularsi e occupare una notevole quantità di spazio su disco.

Rimuoverli è un modo sicuro ed efficace per liberare spazio senza compromettere la funzionalità del sistema.

sudo apt autoremove --purge  

Suggerimenti per la prevenzione:

  • Imposta la rotazione dei registri: utilizza logrotate per gestire automaticamente le dimensioni dei file di registro e i periodi di conservazione.
  • Monitora l'utilizzo del disco: installa strumenti come ncdu per tenere traccia dell'utilizzo del disco e identificare i maiali di spazio.
  • Pulizie regolari: Pianifica pulizie periodiche per rimuovere file temporanei, cache e pacchetti inutilizzati.

Scenario 5: Il server smette improvvisamente di rispondere

Stai gestendo un server Linux e, all'improvviso, smette di rispondere e provi a connetterti tramite SSH, ma la connessione scade o si rifiuta di stabilirsi. Potresti anche notare che il server è ancora acceso, ma non reagisce ad alcun comando.

Questa situazione può essere causata da vari problemi, tra cui:

  • Elevato utilizzo della CPU o della memoria a causa di processi in esecuzione.
  • Colli di bottiglia di I/O su disco, in cui il sistema è sovraccarico di operazioni di lettura/scrittura.
  • Kernel panic o crash del sistema.
  • Errori di rete, che impediscono l'accesso remoto.

Per ripristinare il controllo, segui questi passaggi per la risoluzione dei problemi.

Passaggio 1: accedere al server localmente o tramite TTY

Se SSH non funziona, prova ad accedere al server direttamente o tramite una sessione TTY:

  • Su un computer fisico, utilizzare la console locale.
  • In una macchina virtuale, utilizzare la console dell'hypervisor.
  • Per i sistemi Linux, passare a un'altra sessione TTY utilizzando Ctrl + Alt + F2 (o F3, F4, ecc.).

Passaggio 2: controllare il carico del sistema

Una volta effettuato l'accesso, controlla il carico del sistema e l'utilizzo delle risorse, che mostreranno le medie di carico del sistema su 1, 5 e 15 minuti. Un valore di carico superiore al numero di core della CPU indica una domanda elevata.

uptime  

Successivamente, utilizzare top o htop per monitorare i processi in tempo reale:

top  
Or
htop

Cerca i processi che consumano CPU o memoria eccessiva.

Passaggio 3: identificare e terminare i processi in fuga

Per identificare i processi che richiedono più risorse, eseguire:

ps aux --sort=-%cpu | head  

Questo elenca i principali processi che consumano CPU, in cui è possibile trovare un processo problematico e terminarlo utilizzando:

kill -9 PID  

Sostituire PID con l'ID processo dell'applicazione problematica.

Passaggio 4: controlla i registri di sistema

Se il sistema continua a rispondere, verificare la presenza di errori nei registri:

sudo tail -f /var/log/syslog  
Or
sudo dmesg | tail  

Questi comandi visualizzano i messaggi di sistema recenti e i registri del kernel, che possono aiutare a identificare problemi hardware o software.

Passaggio 5: riavvia in modo sicuro utilizzando SysRq

Se il sistema è completamente bloccato, utilizzare la combinazione di tasti SysRq per riavviare in modo sicuro:

echo b > /proc/sysrq-trigger  

Ciò attiva un riavvio sicuro, garantendo l'integrità dei dati sincronizzando i dischi e smontando i file system.

Conclusione

La risoluzione dei problemi è un'abilità essenziale per ogni utente Linux. Che si tratti di recuperare file eliminati, reimpostare le password o correggere errori di sistema, conoscere i comandi giusti può far risparmiare tempo e frustrazione.

Hai i tuoi suggerimenti per la risoluzione dei problemi? Condividili nei commenti! Costruiamo insieme un'utile comunità Linux.