Per df
calcolare i totali, utilizzare l' --totals
opzione. Se desideri i totali solo su alcune unità selezionate, specificali come argomenti.
Esempi (e output dal mio computer)
Questo è il totale per tutti i supporti locali:
$ df --total -hl
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 14G 12G 2,1G 85% /
none 490M 660K 489M 1% /dev
none 497M 1,5M 495M 1% /dev/shm
none 497M 260K 496M 1% /var/run
none 497M 0 497M 0% /var/lock
/dev/sda1 3,7G 418M 3,3G 12% /fastdisk
total 19G 12G 7,3G 62%
Limitazione ad alcune unità (tenere presente che se il percorso specificato non è un punto di montaggio esatto, viene utilizzato il punto di montaggio contenente più vicino [vedere la nota alla fine] ):
$ df -hl --total /home /fastdisk
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 14G 12G 2,1G 85% /
/dev/sda1 3,7G 418M 3,3G 12% /fastdisk
total 17G 12G 5,3G 69%
o usando i dev
nomi:
$ df -hl --total /dev/sda1 /dev/sdb1
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 3,7G 418M 3,3G 12% /fastdisk
/dev/sdb1 14G 12G 2,1G 85% /
total 17G 12G 5,3G 69%
Ulteriore personalizzazione
Se si desidera elencare tutti i montaggi tranne quelli "speciali", è possibile utilizzare l' -x
opzione per escludere per tipo di partizione. (Usa l' -T
opzione per mostrare i tipi.)
Personalmente, per uso interattivo, utilizzo il seguente alias bash (aggiunto a ~/.bash_aliases
) per escludere i montaggi "non fisici".
alias df='df -h -x devtmpfs -x tmpfs -x debugfs'
Nota
La specifica dei percorsi all'interno dei punti di montaggio può a volte produrre risultati in forme diverse specificando il percorso esatto verso il punto di montaggio. Ad esempio, sul mio laptop utilizzo sshfs
per montare il mio file-server (locale).
df -h ~/.server-root/ ~/.server-root/disks/A ~/.server-root/disks/B
Filesystem Size Used Avail Use% Mounted on
johan@server:/ 185G 58G 118G 33% /home/johan/.server-root
johan@server:/ 1,9T 637G 1,2T 35% /home/johan/.server-root
johan@server:/ 1,8T 1,1T 757G 59% /home/johan/.server-root
Il server root ( /
) è montato su ~/.server-root
. Tuttavia, sul server sono montati i dischi /disks/*
che df
(sul laptop) non "conoscono".
Evidentemente è df
possibile elencare l'utilizzo del disco sui diversi montaggi sul server, se forniti i percorsi corretti. Tuttavia, mostra lo stesso "Filesystem" e "Montato su" per tutti i percorsi, poiché (credo) che sia l'unico punto di mount (relativo a questo sshfs
mount) nella tabella di mount del kernel locale.
Un'altra cosa: non proprio correlato alla domanda, ma correlato a una precedente risposta alla domanda.
Aggiungere i numeri con uno awk
script (o simile), come fanno alcune risposte precedentemente pubblicate, non è una buona idea quando si usa il -h
flag. Questo perché è richiesta una gestione speciale. Non puoi fare solo size+=$2;
per un campo che si trova 418M
su una riga e 12G
su un'altra e ottenere qualcosa di utile da esso ...
Per un esempio con awk
, aggiungendo 500M
ai 10.2G
rendimenti
$ echo -e '500M\n10.2G' | awk '{size+=$1;} END{print size;}'
510.2
510.2 di cosa?
C'è chiaramente un problema qui. Quindi, proprio come un consiglio da ricordare , quando si fa un calcolo (automatizzato) sull'output di df
(e altri che possono usare numeri 'leggibili dall'uomo' ) . Assicurarsi di non utilizzare il -h
flag e che l'input per lo script di calcolo sia, invece, normalizzato (ad esempio byte, blocchi, KB o altro) ed eseguire il "ridimensionamento della visualizzazione" alla fine. Non è difficile, nella maggior parte dei linguaggi di programmazione e di scripting, aggiungere qualcosa come:
If value < threshold Then
print (value),"B"
Else If value < 1024*threshold Then
print (value/1024),"kB"
Else If value < 1024*1024*threshold Then
print (value/1024/1024),"MB"
(and so on...)
dove valore è in byte e soglia è un valore dell'ordine di 1000. Il risultato di questo metodo è che puoi facilmente sintonizzarlo per produrre valori stampati (escluso il prefisso) in un intervallo desiderato e con un numero di cifre significative per il tuo la scelta. Rispetto al caso con utility standard con -h
switch, in cui il formato è spesso fisso.
Naturalmente, questo calcolo può spesso essere reso più efficiente e / o elegante, ma questa è una domanda per la lingua specifica in cui è scritto. Francamente, se viene utilizzato in uno script utente che viene eseguito solo di tanto in tanto per visualizzare interattivamente alcune informazioni, l'efficienza non è davvero una preoccupazione.