Scenari di risoluzione dei problemi Linux: sfide e soluzioni del mondo reale

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

Questa guida presenta scenari di risoluzione dei problemi reali di Linux insieme a soluzioni passo passo, che sono comuni tra gli amministratori di sistema, gli sviluppatori e gli utenti quotidiani di Linux.

Scenario 1: Hai Cancellato 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 ha un “Cestino” integrato per i file cancellati dal terminale.

Le tue opzioni di recupero dipendono dal filesystem in uso.

Per i Filesystem EXT3/EXT4

Usa extundelete, che è un’utilità open-source progettata per recuperare file cancellati dai filesystem ext3 e ext4 in Linux.

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

Prima di tentare il recupero, smonta la partizione per prevenire ulteriori scritture che potrebbero sovrascrivere i dati cancellati:

sudo umount /dev/sdX

Successivamente, esegui il seguente comando per recuperare il file cancellato e assicurati di sostituire /dev/sdX con la partizione effettiva da cui è stato cancellato il file.

sudo extundelete /dev/sdX --restore-all

Per i Filesystem XFS, Btrfs o NTFS

Se il tuo 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 indicazioni interattive per ripristinare file persi.

sudo testdisk

Consigli di 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: Recuperare una password di root dimenticata

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

Puoi reimpostare la password di root avviando in modalità di recupero o modificando il bootloader GRUB.

Utilizzando la modalità di recupero (Ubuntu/Debian)

Prima, riavvia il tuo sistema e tieni premuto Shift durante l’avvio per accedere al menu GRUB, quindi seleziona “Opzioni avanzate” → “Modalità di ripristino” e scegli “Passa alla 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

Utilizzando rd.break (RHEL/CentOS/Fedora)

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

Successivamente, 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 rimanere bloccato senza accesso di root.
  • Utilizza le chiavi SSH anziché le password per l’autenticazione.

Scenario 3: Hai Installato un Pacchetto, ma Non Funziona

Hai installato un pacchetto, ma dice “comando non trovato” quando provi ad 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 è verificare innanzitutto se il pacchetto è 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  

Successivamente, controlla se il comando è nel tuo sistema PATH.

which package-name  
echo $PATH

Se l’eseguibile si trova in una posizione non standard, aggiungilo a PATH:

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

Suggerimenti di prevenzione:

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

Scenario 4: Il Tuo Sistema Sta Finendo Lo Spazio su Disco

Il tuo sistema mostra un errore “Spazio esaurito sul dispositivo“, impedendo gli aggiornamenti software, la registrazione e le operazioni normali.

Ecco come recuperare spazio su disco e mantenere il tuo sistema funzionante correttamente.

Passo 1: Controlla l’Utilizzo del Disco

La soluzione è, innanzitutto, controllare quanto spazio è utilizzato su ciascuna partizione del tuo sistema utilizzando il comando df.

df -h

Passo 2: Trova ed Elimina File di Grandi Dimensioni

Successivamente, individua i file più grandi che occupano spazio eseguendo il comando du, che scannerizzerà il tuo sistema e elencherà i 10 file o cartelle più grandi. Elimina i file non necessari usando il comando rm o spostandoli su un’unità esterna.

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

Passo 3: Rimuovere i Log Non Necessari

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

Con il tempo, i vecchi log potrebbero non essere più necessari, rendendoli candidati ideali per la pulizia.

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

Passo 4: Rimuovere i Vecchi Kernel (Ubuntu/Debian)

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

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

La loro rimozione è un modo sicuro ed efficace per liberare spazio senza influenzare la funzionalità del sistema.

sudo apt autoremove --purge  

Suggerimenti per la Prevenzione:

  • Impostare la Rotazione dei Log: Utilizzare logrotate per gestire automaticamente le dimensioni dei file di log e i periodi di conservazione.
  • Monitorare l’Utilizzo del Disco: Installare strumenti come ncdu per tenere traccia dell’utilizzo del disco e identificare gli spazio occupati.
  • Pulizie Regolari: Pianificare pulizie periodiche per rimuovere file temporanei, cache e pacchetti non utilizzati.

Scenario 5: Il Tuo Server Risulta Improvvisamente Non Rispondente

Stai gestendo un server Linux e improvvisamente smette di rispondere e provi a connetterti tramite SSH, ma la connessione va in timeout o rifiuta di stabilirsi. Potresti anche notare che il server è ancora acceso, ma non reagisce a nessun comando.

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

  • Alti utilizzi di CPU o memoria dovuti a processi in esecuzione incontrollata.
  • Ostruzioni di I/O del disco, dove il sistema è sovraccarico di operazioni di lettura/scrittura.
  • Panici del kernel o crash di sistema.
  • Guasti di rete, che impediscono l’accesso remoto.

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

Passaggio 1: Accedi al Server Localmente o tramite TTY

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

  • Su una macchina fisica, utilizza la console locale.
  • Su una macchina virtuale, utilizza la console dell’ipervisore.
  • Per i sistemi Linux, passa a un’altra sessione TTY usando Ctrl + Alt + F2 (o F3, F4, ecc.).

Passaggio 2: Controlla il Carico di Sistema

Dopo esserti autenticato, controlla il carico di 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 CPU indica una domanda elevata.

uptime  

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

top  
Or
htop

Cerca i processi che consumano troppa CPU o memoria.

Passaggio 3: Identifica ed Elimina i Processi Fuori Controllo

Per identificare i processi che consumano più risorse, esegui:

ps aux --sort=-%cpu | head  

Questo elenca i processi che consumano più CPU, dove puoi trovare un processo problematico e terminarlo usando:

kill -9 PID  

Sostituisci PID con l’ID del processo dell’applicazione problematica.

Passaggio 4: Controlla i Log di Sistema

Se il sistema risponde ancora, controlla i log per gli errori:

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

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

Passo 5: Riavviare in Sicurezza Utilizzando SysRq

Se il sistema è completamente bloccato, utilizza la combinazione di tasti SysRq per riavviare in sicurezza:

echo b > /proc/sysrq-trigger  

Questo attiva un riavvio sicuro, garantendo l’integrità dei dati sincronizzando i dischi e smontando i filesystem.

Conclusione

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

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

Source:
https://www.tecmint.com/linux-troubleshooting-tips/