Für df
zu berechnen Summen, verwenden Sie die --totals
Option. Wenn Sie die Gesamtsummen nur für einige ausgewählte Laufwerke verwenden möchten, geben Sie sie als Argumente an.
Beispiele (und Ausgabe von meinem Computer)
Dies ist die Summe für alle lokalen Reittiere:
$ 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%
Beschränkung auf wenige Laufwerke (Beachten Sie, dass der nächstgelegene Einhängepunkt verwendet wird, wenn der angegebene Pfad kein genauer Einhängepunkt ist [siehe Hinweis am Ende] ):
$ 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%
oder mit dev
Namen:
$ 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%
Weitere Anpassung
Wenn Sie alle Bereitstellungen mit Ausnahme der speziellen Bereitstellungen auflisten möchten, können Sie sie mithilfe der -x
Option nach Partitionstyp ausschließen. (Verwenden Sie die -T
Option, um die Typen anzuzeigen.)
Persönlich verwende ich für die interaktive Verwendung den folgenden Bash-Alias (hinzugefügt ~/.bash_aliases
), um die "nicht-physischen" Reittiere auszuschließen.
alias df='df -h -x devtmpfs -x tmpfs -x debugfs'
Hinweis
Das Angeben von Pfaden innerhalb von Einhängepunkten kann manchmal zu unterschiedlichen Ergebnissen führen, wenn der genaue Pfad zum Einhängepunkt angegeben wird. Zum Beispiel verwende ich auf meinem Laptop sshfs
, um meinen (lokalen) Dateiserver einzuhängen.
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
Der Server root ( /
) ist unter gemountet ~/.server-root
. Auf dem Server sind jedoch Datenträger gemountet /disks/*
, von denen df
(auf dem Laptop) nichts bekannt ist.
Offensichtlich df
kann die Datenträgerverwendung auf den verschiedenen Bereitstellungen auf dem Server aufgeführt werden, wenn die richtigen Pfade angegeben werden. Es wird jedoch für alle Pfade dasselbe „Dateisystem“ und „Mounted on“ angezeigt, da (glaube ich) dies der einzige Mount-Punkt (in Bezug auf diesen sshfs
Mount) in der lokalen Kernel-Mount-Tabelle ist.
Eine andere Sache: Nicht wirklich mit der Frage verbunden, sondern mit einer vorherigen Antwort auf die Frage.
Das Aufsummieren der Zahlen mit einem awk
Skript (oder ähnlichem), wie es einige zuvor veröffentlichte Antworten tun, ist keine gute Idee, wenn Sie die -h
Flagge verwenden. Dies liegt daran, dass eine besondere Behandlung erforderlich ist. Sie können nicht nur size+=$2;
für ein Feld 418M
in einer Reihe und 12G
in einer anderen Reihe etwas Nützliches daraus machen ...
Für ein Beispiel mit awk
Hinzufügen 500M
zu 10.2G
Ausbeuten
$ echo -e '500M\n10.2G' | awk '{size+=$1;} END{print size;}'
510.2
510,2 von was?
Hier liegt eindeutig ein Problem vor. Dies ist nur ein Tipp, den Sie sich merken sollten , wenn Sie (automatisierte) Berechnungen für die Ausgabe von df
(und anderen, die 'vom Menschen lesbare' Zahlen verwenden können) durchführen . Stellen Sie sicher, dass Sie das Flag nicht verwenden -h
und die Eingabe in das Berechnungsskript stattdessen normalisiert ist (z. B. auf Bytes, Blöcke, KBs oder was auch immer), und führen Sie am Ende die "Anzeigeskalierung" durch . In den meisten Skript- und Programmiersprachen ist es nicht schwer, Folgendes hinzuzufügen:
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...)
in den Wert in Bytes ist und Schwelle ein Wert in der Größenordnung von 1000. Das Ergebnis dieser Methode ist , ist , dass man ganz einfach einstellen kann ihn gedruckt Werte erzeugen (ohne Vorzeichen) in einem gewünschten Bereich und mit einer Anzahl von signifikanten Ziffern auf Ihre wählen. Im Vergleich zu Standarddienstprogrammen mit -h
Switches, bei denen das Format häufig festgelegt ist.
Natürlich kann diese Berechnung oft effizienter und / oder eleganter gestaltet werden, aber das ist eine Frage für die spezifische Sprache, in der sie geschrieben ist. Ehrlich gesagt, wenn sie in einem Benutzerskript verwendet wird, das nur ab und zu zum interaktiven Anzeigen ausgeführt wird Einige Informationen, Effizienz ist nicht wirklich ein Anliegen.