Guida ai comandi Linux per la diagnostica di sistema, rete e hardware

Una panoramica pratica dei principali comandi da terminale per il debug e il monitoraggio dei sistemi Linux e macOS: dall'analisi dello spazio su disco al controllo di memoria, risorse e traffico di rete.

Immagine generata con AI
Immagine generata con AI
Riassunto generato automaticamente tramite intelligenza artificiale:

Questa guida presenta comandi Linux essenziali per la diagnostica, organizzati per area tematica, con enfasi su strumenti che hanno o non hanno equivalenti su macOS. Si sottolinea la compatibilità di alcuni comandi BSD/UNIX su macOS, mentre altri richiedono l'uso di utility specifiche per Linux o alternative da verificare su macOS.

Introduzione

Questa guida raccoglie i comandi da riga di comando più utili per la quasi totalità delle esigenze diagnostiche quotidiane su un sistema Linux, dal debug di un server in produzione alla semplice curiosità sulla propria macchina di sviluppo, organizzati per area tematica, con una breve spiegazione del funzionamento di ciascuno e, dove utile, dell'alternativa moderna a strumenti ormai superati.

Compatibilità con macOS

Buona parte di questa guida è pensata per Linux, ma vale la pena ricordare che macOS è a sua volta un sistema basato su UNIX (nello specifico deriva da BSD), per cui diversi comandi elencati funzionano invariati anche su un Mac aperto dal Terminale. Rientrano in questo gruppo df -h, du -sh, uname -a, uptime, ping -c 4, traceroute, dig e curl, oltre a strumenti installabili via Homebrew come ncdu, htop, btop e fastfetch.

Altri comandi della guida sono invece specifici del mondo Linux e non hanno un corrispettivo diretto su macOS, perché si appoggiano a sottosistemi che semplicemente non esistono fuori dal kernel Linux, come il filesystem virtuale /proc (da cui dipendono /proc/meminfo, /proc/cpuinfo), lo stack iproute2 (ip a, ip r, ss), systemd (hostnamectl) o il pacchetto lm-sensors (sensors). Anche lsblk, lscpu e lshw sono strumenti legati al mondo Linux, così come lspci, non presente nativamente su macOS.

Disco e filesystem, spazio e partizioni

Per avere una panoramica immediata dello spazio libero e occupato su tutti i filesystem montati si usa il comando seguente, dove il flag -h (human-readable) converte i valori grezzi in blocchi in un formato leggibile espresso in GB o MB.

df -h

Quando invece serve capire quanto spazio occupa nello specifico una cartella e le sue sottocartelle, il comando di riferimento è du, dove -s produce un riassunto totale invece del dettaglio ricorsivo file per file e -h rende l'output leggibile.

du -sh /percorso/della/cartella

Per elencare tutti i dispositivi di archiviazione collegati (dischi, partizioni, chiavette USB) e i rispettivi punti di montaggio si utilizza lsblk, che con il flag -f mostra anche il tipo di filesystem e l'UUID di ciascuna partizione.

lsblk -f

Per la tabella delle partizioni completa di tutti i dischi, comprensiva di schema (MBR o GPT) e dimensioni esatte dei settori, serve invece fdisk in modalità di sola lettura elenco, che richiede i privilegi di amministratore.

sudo fdisk -l

Infine, per chi deve esplorare interattivamente cosa occupa spazio su disco senza scorrere output statici, ncdu è uno strumento a interfaccia testuale molto pratico: se non è già presente si installa con il gestore pacchetti della distribuzione.

sudo apt install ncdu

Memoria RAM e swap

Lo strumento più immediato per controllare memoria RAM e swap libere, utilizzate e totali è free, dove -h formatta automaticamente i valori in KB, MB o GB a seconda della loro grandezza.

free -h

Se serve un monitoraggio continuo, watch permette di rieseguire un comando a intervalli regolari, in questo caso ogni secondo, così da osservare in tempo reale l'andamento della memoria.

watch -n 1 free -h

Per chi ha bisogno del dettaglio più granulare possibile, direttamente dai contatori del kernel, la fonte primaria è il file virtuale seguente.

cat /proc/meminfo

CPU e processore

Per visualizzare architettura della CPU, modello, numero di core fisici, thread logici e livelli di cache, il comando più sintetico è lscpu.

lscpu

Chi ha bisogno delle informazioni dettagliate per ogni singolo core, comprese le frequenze correnti, può leggerle direttamente dal kernel.

cat /proc/cpuinfo

Per il monitoraggio in tempo reale di processi e utilizzo di CPU e RAM, il comando storico è top; sui sistemi moderni conviene però preferire alternative più leggibili e interattive come htop o btop, se disponibili.

top

Scheda video (GPU) e hardware generale

Per identificare il modello esatto della scheda video installata (NVIDIA, AMD o Intel) si interroga il bus PCI filtrando per la classe video.

lspci | grep -i vga

Su sistemi con GPU dedicata secondaria, in configurazioni ibride o server con acceleratori grafici, la classe da cercare può invece essere quella 3D.

lspci | grep -i 3d

Per informazioni più dettagliate sul controller grafico e sul driver effettivamente in uso, lshw filtrato sulla classe display offre un output più ricco, sempre con privilegi elevati.

sudo lshw -C display

Chi lavora con schede NVIDIA dispone di uno strumento dedicato che mostra temperatura, memoria video occupata e processi attivi sulla GPU in tempo reale.

nvidia-smi

Per un inventario hardware completo dell'intera macchina, in forma sintetica, si usa lshw con il flag di riassunto.

sudo lshw -short

Informazioni di sistema, kernel e dispositivo

Per un quadro d'insieme che comprende nome host, versione del kernel, distribuzione e architettura, hostnamectl è oggi lo strumento di riferimento sulle distribuzioni basate su systemd.

hostnamectl

Se serve solo la versione esatta del kernel Linux in esecuzione, il comando dedicato è più mirato.

uname -r

Per tutte le informazioni di sistema di base condensate in un'unica riga, si aggiunge il flag -a.

uname -a

I dettagli sulla distribuzione, nome, versione e identificativo, si leggono da un file standard presente su praticamente tutte le distribuzioni moderne.

cat /etc/os-release

Per sapere da quanto tempo il sistema è acceso, quanti utenti sono collegati e qual è il carico medio (load average) su 1, 5 e 15 minuti, si usa uptime.

uptime

Per chi desidera anche un colpo d'occhio estetico, con il logo della distribuzione in ASCII art accanto ai dati hardware, neofetch è stato per anni lo strumento più diffuso. Il progetto originale non riceve più sviluppo attivo, per cui oggi conviene orientarsi su fastfetch, il fork mantenuto attivamente e generalmente più veloce, già indicato come alternativa nella bozza originale.

fastfetch

Rete, interfacce e connessioni

Per elencare tutte le interfacce di rete, fisiche e virtuali, con i relativi indirizzi MAC e IP, lo strumento moderno è ip, che ha sostituito il deprecato ifconfig.

ip a

Per la tabella di routing, utile a capire quale sia il gateway predefinito della macchina, si usa il sottocomando dedicato.

ip r

Per verificare quali porte sono in ascolto e a quale processo appartengono, ss ha sostituito il vecchio netstat; i flag -tulpn combinano socket TCP e UDP, mostrano solo quelli in ascolto (listening) e includono il nome del processo.

ss -tulpn

Per scoprire il proprio indirizzo IP pubblico interrogando un servizio esterno, curl verso un endpoint dedicato restituisce direttamente il valore.

curl ifconfig.me

Per informazioni geografiche e di provider più complete sullo stesso indirizzo pubblico, esiste un servizio equivalente più ricco.

curl ipinfo.io

Per verificare la raggiungibilità di un host e misurarne la latenza, limitando l'invio a un numero contenuto di pacchetti per non generare traffico inutile, si usa ping con il flag -c.

ping -c 4 1.1.1.1

Per visualizzare il percorso seguito dai pacchetti verso un server, utile in fase di diagnosi di problemi di instradamento, il comando classico è traceroute; l'alternativa interattiva mtr combina traceroute e ping in un'unica vista aggiornata in tempo reale.

traceroute google.com

Per interrogare direttamente i server DNS e risolvere un dominio nel relativo indirizzo IP, gli strumenti di riferimento sono dig, più verboso e dettagliato, e nslookup, più sintetico.

dig google.com

Temperature e sensori

Per leggere le temperature della CPU e degli altri componenti hardware supportati, il comando sensors è lo standard de facto sulle distribuzioni Linux, e richiede il pacchetto lm-sensors installato e configurato tramite sensors-detect al primo utilizzo.

sensors

Tabella riassuntiva dei comandi

Area Comando principale Scopo
Disco df -h Spazio libero e occupato sui filesystem montati
Disco du -sh Spazio occupato da una cartella specifica
Memoria free -h RAM e swap libere, usate e totali
CPU lscpu Architettura, core, thread e cache
GPU lspci | grep -i vga Identificazione della scheda video
Sistema hostnamectl Hostname, kernel, distribuzione, architettura
Rete ip a Interfacce di rete e indirizzi IP/MAC
Temperature sensors Temperature CPU e componenti hardware

Articolo scritto con il supporto di LLM per la formattazione e la struttura del codice.

Commenti