Quando gestisci lo spazio su disco sui sistemi Linux, ci sono diversi strumenti da riga di comando che possono aiutarti ad analizzare l'utilizzo dello storage e trovare aree da ottimizzare. In questo articolo, vedremo come usare questi comandi per capire e gestire lo spazio su disco in Linux.
Punti Chiave
- Il comando 'df' mostra lo spazio totale e disponibile su ogni disco collegato al sistema
- 'df -H' mostra l'output in un formato leggibile (MB, GB, TB)
- Personalizza l'output di 'df' con il flag '--output' seguito dai nomi dei campi (es., source, size, used, avail)
- Il comando 'du' mostra le dimensioni di directory e file
- Combina 'du' con 'sort' e 'head' per trovare le directory più grandi (es., 'du -a . | sort -n -r | head -n 10')
Comando df
Panoramica del comando 'df'
Il comando 'df', che sta per "disk filesystem", è uno strumento per controllare l'utilizzo dello spazio su disco nei sistemi Linux. Mostra informazioni sullo spazio totale e disponibile su ogni disco collegato al sistema, inclusi i dischi locali e i file system di rete. Questo comando è stato usato dagli utenti Linux per analizzare l'utilizzo dello spazio su disco fin dai primi giorni del sistema operativo negli anni '90.
Utilizzo base di 'df'
Per usare 'df', esegui il comando con il flag '-H', così: df -H. Questo mostra l'output in un formato leggibile, visualizzando le dimensioni dello spazio su disco in megabyte, gigabyte o terabyte. L'output include diverse colonne di informazioni per ogni file system:
| Colonna | Descrizione |
|---|---|
| Filesystem | Il nome del file system o il percorso del dispositivo |
| Size | La dimensione totale del file system |
| Used | La quantità di spazio utilizzato sul file system |
| Available | Lo spazio libero rimanente sul file system |
| Use% | La percentuale del file system occupata |
| Mounted on | Il punto di mount dove è collegato il file system |
Ad esempio, per controllare quanto spazio è rimasto sul disco principale del sistema, che di solito è montato su '/', esegui:
df -H /
Questo potrebbe produrre qualcosa come:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 100G 65G 35G 65% /
Per visualizzare informazioni su un disco o una partizione specifica, includi il percorso del dispositivo come argomento di 'df'. Ad esempio, df -H /dev/sda1 mostra l'utilizzo dello spazio per la prima partizione sul disco SATA primario.
Personalizzare l'output di 'df'
Per impostazione predefinita, 'df' include un set di colonne nel suo output. Puoi personalizzarlo usando il flag '--output' seguito da un elenco separato da virgole di nomi di campi. Alcuni campi utili sono:
- source: il dispositivo sorgente del file system
- size: dimensione totale del file system
- used: quantità di spazio utilizzato
- avail: quantità di spazio disponibile
- pcent: percentuale di spazio utilizzato
Ad esempio, per creare un report che mostra il dispositivo, la dimensione totale, lo spazio utilizzato e lo spazio disponibile, esegui:
df -H --output=source,size,used,avail
Questo stampa una tabella con le colonne selezionate:
Filesystem Size Used Avail
/dev/sda1 100G 65G 35G
/dev/sda2 500G 100G 400G
Comando du
Cos'è il comando 'du'?
Il comando du, abbreviazione di "disk usage", è un'utilità Linux che mostra le dimensioni di directory e file. A differenza del comando df che fornisce una vista generale dell'utilizzo del disco per file system, du ti permette di vedere lo spazio utilizzato da directory e file specifici. Questo lo rende utile per scoprire quali sottodirectory e file stanno usando più spazio su disco sul tuo sistema Linux.
Come usare 'du'
Per usare du, fornisci come argomento la directory che vuoi analizzare:
du /home/user/Documents
Questo produce un elenco di tutte le sottodirectory in /home/user/Documents, insieme allo spazio su disco che ciascuna usa. Per impostazione predefinita, le dimensioni sono mostrate in kilobyte.
Per rendere l'output più facile da leggere, usa il flag -h per mostrare le dimensioni in formato leggibile (KB, MB o GB), e il flag -s per mostrare solo un riepilogo per la directory:
du -sh /home/user/Documents
Questo potrebbe produrre qualcosa come:
25G /home/user/Documents
Mostrando che la directory /home/user/Documents e il suo contenuto usano in totale 25 gigabyte di spazio su disco.
Puoi anche usare du su singoli file per vedere il loro utilizzo del disco:
du -h /home/user/Documents/large-file.zip
Ad esempio, se hai un file video grande nella tua cartella Documents, potresti eseguire:
du -h /home/user/Documents/vacation-video.mp4
E ottenere un output come:
2.3G /home/user/Documents/vacation-video.mp4
Mostrando che il file video occupa 2,3 gigabyte di spazio.
Trovare le directory più grandi con 'du'
Un uso comune per du è trovare le directory che stanno usando più spazio su disco. Anche se potresti controllare manualmente l'output per trovare le sottodirectory più grandi, è più facile combinare du con altri comandi per ordinare i risultati.
Per elencare le prime 10 sottodirectory nella directory corrente per dimensione, esegui:
du -a . | sort -n -r | head -n 10
Ecco cosa fa ogni parte del comando:
du -a .: Calcola l'utilizzo del disco di tutti i file e sottodirectory nella directory corrente (.). Il flag-ainclude i file oltre alle directory.sort -n -r: Ordina l'output didunumericamente (-n) in ordine inverso (-r), quindi i numeri più grandi sono primi.head -n 10: Prende le prime 10 righe dell'output ordinato.
Il comando completo ti fornisce un elenco delle 10 sottodirectory e file più grandi, che puoi poi esaminare ulteriormente per vedere se si può recuperare spazio.
Puoi anche specificare una directory diversa da cui partire:
du -a /home/user/Documents | sort -n -r | head -n 10
Questo trova i primi 10 consumatori di spazio all'interno della directory /home/user/Documents e delle sue sottodirectory.
Ad esempio, supponiamo che la tua directory /home/user/Documents contenga queste sottodirectory:
/home/user/Documents/work
/home/user/Documents/personal
/home/user/Documents/photos
/home/user/Documents/music
Eseguire il comando sopra potrebbe produrre qualcosa come:
45G /home/user/Documents/photos
30G /home/user/Documents/music
10G /home/user/Documents/work
5G /home/user/Documents/personal
Mostrando che le sottodirectory photos e music stanno usando più spazio.
Comando stat
Il comando stat mostra informazioni su un file, una directory o un file system, incluse dimensione, dimensione del blocco e utilizzo del disco.
Per usare stat, specifica il percorso del file, della directory o del dispositivo che vuoi analizzare. Ad esempio:
stat /home/user/Documents/file1.txt
Questo produrrà informazioni su file1.txt:
File: /home/user/Documents/file1.txt
Size: 4096 Blocks: 8 IO Block: 4096 regular file
Device: 10301h/66049d Inode: 1234567 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2023-04-20 10:30:00.000000000 +0200
Modify: 2023-04-20 10:30:00.000000000 +0200
Change: 2023-04-20 10:30:00.000000000 +0200
Birth: -
Da questo output, puoi vedere la dimensione del file (4096 byte), il numero di blocchi che occupa su disco (8) e altri metadati come permessi, proprietà e timestamp.
Puoi anche usare stat su una directory o un file system. Ad esempio:
stat /home/user/Documents
Questo mostrerà la dimensione e l'utilizzo del disco della directory /home/user/Documents, con altre informazioni.
Gli scenari in cui stat può essere utile includono:
- Analizzare l'utilizzo del disco di un file o una directory specifica per identificare inefficienze di storage
- Controllare i permessi e la proprietà dei file per risolvere problemi di accesso
- Esaminare i timestamp dei file per determinare quando un file è stato modificato o accesso l'ultima volta
Esempio: Controllare Permessi e Proprietà dei File
Per controllare i permessi e la proprietà di un file, puoi usare stat:
stat /home/user/Documents/important_file.txt
L'output includerà i permessi e la proprietà del file:
Access: (0640/-rw-r-----) Uid: ( 1000/ user) Gid: ( 1000/ user)
In questo caso, il file ha permessi di lettura e scrittura per il proprietario (user), permessi di lettura per il gruppo (user) e nessun permesso per gli altri. Il proprietario e il gruppo sono entrambi "user" con UID 1000 e GID 1000.
Se i permessi o la proprietà non sono corretti, puoi usare chmod e chown per modificarli:
chmod 0644 /home/user/Documents/important_file.txt
chown user:group /home/user/Documents/important_file.txt
Questo imposta i permessi a -rw-r--r-- (lettura e scrittura per il proprietario, lettura per il gruppo e gli altri) e cambia il proprietario in "user" e il gruppo in "group".
Comando fdisk -l
Il comando fdisk -l viene usato per visualizzare informazioni sulle partizioni del disco e le loro dimensioni. Elenca le tabelle delle partizioni per tutti i dispositivi di storage collegati al sistema e mostra il layout del disco.
Eseguire fdisk -l come root (o con sudo) produrrà informazioni su ogni disco e le sue partizioni:
Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A1B2C3D4-E5F6-G7H8-I9J0-K1L2M3N4O5P6
Device Start End Sectors Size Type
/dev/sda1 2048 206847 204800 100M EFI System
/dev/sda2 206848 2303999 2097152 1G Linux filesystem
/dev/sda3 2304000 31457279 29153280 14G Linux filesystem
Questo output mostra che /dev/sda ha una dimensione totale di 50 GiB e contiene tre partizioni: una partizione EFI System da 100 MB, una partizione Linux filesystem da 1 GB e una partizione Linux filesystem da 14 GB.
Il comando fdisk -l è utile per capire la struttura dei tuoi dispositivi di storage e le dimensioni delle partizioni. Può aiutare in operazioni come:
- Identificare la dimensione totale e lo spazio libero su ogni dispositivo di storage
- Determinare il layout e le dimensioni delle partizioni quando pianifichi una nuova installazione o ripartizionamento
- Verificare che le partizioni siano configurate correttamente e allineate con il dispositivo di storage
Esempio: Identificare la Dimensione Totale del Disco e lo Spazio Libero
Per controllare rapidamente la dimensione totale e lo spazio libero di un disco, puoi combinare fdisk -l con grep e awk:
sudo fdisk -l /dev/sda | grep -e "Disk /dev/sda" -e "^$" | awk '{print $3 " " $4}'
Questo comando estrae le righe rilevanti dall'output di fdisk -l e mostra la dimensione totale del disco e l'unità:
50 GiB
Per calcolare lo spazio libero, sottrai lo spazio utilizzato (somma delle dimensioni delle partizioni) dalla dimensione totale del disco. Puoi automatizzare questo con uno script:
#!/bin/bash
disk="/dev/sda"
total_size=$(sudo fdisk -l $disk | grep "Disk $disk" | awk '{print $3}')
used_space=$(sudo fdisk -l $disk | awk '/^\/dev/ {sum += $5} END {print sum}')
free_space=$((total_size - used_space))
echo "Total size: $total_size bytes"
echo "Used space: $used_space bytes"
echo "Free space: $free_space bytes"
Questo script calcola la dimensione totale del disco, somma le dimensioni delle partizioni per ottenere lo spazio utilizzato e sottrae lo spazio utilizzato dalla dimensione totale per determinare lo spazio libero. L'output apparirà così:
Total size: 53687091200 bytes
Used space: 15728640000 bytes
Free space: 37958451200 bytes
Questo ti aiuta a valutare rapidamente lo spazio libero su un disco senza doverlo calcolare manualmente dalle dimensioni delle partizioni.
Combinare i Comandi per un'Analisi Dettagliata
Ordinare File e Directory per Dimensione
Puoi combinare il comando du con sort per elencare file e directory ordinati per il loro utilizzo del disco. Questo è utile per trovare i file e le directory più grandi.
Ad esempio, per ordinare i contenuti della directory Desktop per dimensione dal più grande al più piccolo, esegui:
du -h /home/user/Desktop| sort -rn
Il flag -h rende l'output facile da leggere, mentre sort -rn ordina i risultati numericamente (-n) in ordine inverso (-r).
Se vuoi vedere solo i risultati più grandi o più piccoli, puoi reindirizzare l'output a head o tail:
| Comando | Descrizione |
|---|---|
du -h /home/user/Desktop \| sort -rn \| head -n 5 |
Vedere i 5 file/directory più grandi sul Desktop |
du -h /home/user/Desktop \| sort -rn \| tail -n 5 |
Vedere i 5 file/directory più piccoli sul Desktop |
Ecco un esempio di come potrebbe apparire l'output quando cerchi i 5 elementi più grandi:
4.0G /home/user/Desktop/videos
1.5G /home/user/Desktop/images
1.0G /home/user/Desktop/project.zip
500M /home/user/Desktop/music
100M /home/user/Desktop/documents
Questo mostra che la directory videos sta occupando più spazio con 4,0 gigabyte, seguita da images con 1,5 gigabyte, e così via.
Filtrare i Risultati per Dimensione
Per trovare file più grandi di una certa dimensione, puoi combinare du con grep. Il comando grep cerca righe che corrispondono a un pattern.
Per trovare file nella directory Desktop che sono più grandi di 1 gigabyte, esegui:
du -h /home/user/Desktop | grep '^\s*[0-9\.]\+G'
Questo cerca righe che iniziano con (^) dello spazio bianco (\s*), seguito da una o più (+) cifre o punti ([0-9\.]), e finiscono con una G (per gigabyte).
Puoi cambiare la G con M per trovare file più grandi di un megabyte, o K per kilobyte:
# Trovare file più grandi di 100 megabyte
du -h /home/user/Desktop | grep '^\s*[0-9\.]\+M'
# Trovare file più grandi di 10 kilobyte
du -h /home/user/Desktop | grep '^\s*[0-9\.]\+K'
Ad esempio, se esegui il comando per trovare file più grandi di 100 megabyte, potresti vedere un output come questo:
200M /home/user/Desktop/presentation.ppt
150M /home/user/Desktop/archive.tar.gz
120M /home/user/Desktop/video.mp4
Questa tecnica è utile quando devi trovare file grandi che potrebbero occupare troppo spazio su disco.
Escludere File per Tipo
Quando analizzi l'utilizzo del disco, potresti voler escludere certi tipi di file dai risultati. Il comando du ha un flag --exclude che ti permette di saltare i file che corrispondono a un pattern.
Ad esempio, per ottenere l'utilizzo del disco della directory Desktop escludendo i file di testo, esegui:
du -h /home/user/Desktop --exclude="*.txt"
Questo calcolerà le dimensioni di tutti i file e sottodirectory come al solito, ma escluderà tutti i file che finiscono con .txt.
du -h /home/user/Desktop --exclude={"*.txt","*.jpg","*.png"}
Entrambi questi comandi analizzeranno l'utilizzo del disco saltando i file di testo, JPEG e PNG.
Usare --exclude è utile quando stai cercando di trovare file grandi da eliminare, ma sai che certi tipi di file dovrebbero esserci e non devono essere contati. Ad esempio, se hai una grande raccolta di foto, puoi escludere i file immagine per concentrarti su altri tipi di file che potrebbero occupare spazio inutilmente.
Casi d'Uso Pratici
Ecco alcune situazioni reali in cui combinare du con altri comandi può essere utile:
-
Liberare spazio su disco: Quando il tuo disco rigido ha poco spazio di storage, puoi usare
du -h | sort -rn | headper identificare le directory e i file più grandi. Questo ti aiuta a decidere cosa eliminare o spostare su un altro disco per liberare spazio. -
Preparare una migrazione del sistema: Prima di migrare i tuoi dati su un nuovo computer o disco, è una buona idea controllare l'utilizzo dello storage attuale. Comandi come
du -h --exclude="*.bak" --exclude="*.tmp"ti permettono di ottenere un quadro preciso della dimensione dei tuoi dati escludendo file temporanei o di backup che non devono essere trasferiti. -
Risolvere problemi di prestazioni: Se il tuo sistema è lento o certi processi impiegano molto tempo, potrebbe essere perché stanno elaborando file molto grandi. Usare
du -h | grep '^\s*[0-9\.]\+G'può aiutarti a individuare file grandi che potrebbero causare problemi di prestazioni.
Comando ls -al
Il comando ls -al elenca i contenuti di una directory, inclusi i file nascosti, e mostra le loro dimensioni con altre informazioni. È utile per analizzare l'utilizzo del disco di file specifici all'interno di una directory.
Ad esempio, eseguire ls -al nella directory /home/user/Documents potrebbe mostrare un output come:
total 24
drwxr-xr-x 2 user user 4096 Apr 20 10:30 .
drwxr-xr-x 5 user user 4096 Apr 19 09:15 ..
-rw-r--r-- 1 user user 4096 Apr 20 10:30 file1.txt
-rw-r--r-- 1 user user 8192 Apr 20 10:15 file2.txt
drwxr-xr-x 2 user user 4096 Apr 19 15:45 subdirectory
Qui, ls -al fornisce un elenco della directory, mostrando i permessi dei file, la proprietà, le date di modifica e le dimensioni. Questo comando aiuta quando devi analizzare l'utilizzo del disco di singoli file all'interno di una directory.
Alcuni casi d'uso per ls -al includono:
- Trovare file grandi che stanno occupando spazio su disco
- Controllare i permessi e la proprietà dei file per garantire il controllo degli accessi
- Confrontare le date di modifica dei file per vedere quali file sono stati aggiornati di recente
Esempio: Trovare File Grandi
Per trovare file grandi in una directory, puoi combinare ls -al con sort e head:
ls -al /home/user/Documents | sort -k 5 -n -r | head -n 5
Questo comando elenca i contenuti di /home/user/Documents, ordina l'output per la quinta colonna (dimensione del file) in ordine numerico inverso e mostra i primi 5 risultati. L'output mostrerà i file più grandi nella directory:
-rw-r--r-- 1 user user 1048576 Apr 20 11:00 large_file1.bin
-rw-r--r-- 1 user user 524288 Apr 20 10:45 large_file2.bin
-rw-r--r-- 1 user user 262144 Apr 20 10:30 large_file3.bin
-rw-r--r-- 1 user user 131072 Apr 20 10:15 large_file4.bin
-rw-r--r-- 1 user user 65536 Apr 20 10:00 large_file5.bin
Questo ti aiuta a identificare rapidamente i file più grandi che potrebbero consumare spazio su disco.





