An meinem Computer sind 15 SATA-Festplatten angeschlossen. Sie alle einzeln durchgehen zu müssen, den freien Speicherplatz aufzuschreiben und dann alles zusammenzurechnen, ist nicht optimal.
Gibt es einen Befehl oder eine Befehlskombination, mit der das möglich ist? Idealerweise könnte ich etwas wie Folgendes eingeben, /dev/sd*
da ich die NVMe-Laufwerke nicht einschließen möchte.
Antwort1
EDIT: Ich sollte öfter Manpages lesen. Es ist so einfach wie
df --total -h /dev/sd*
Ok, ich habe etwas herausgefunden
df --output=avail /dev/sd* | tail -n +2 | datamash sum 1
Dabei werden grundsätzlich die gemounteten Datenträger aufgelistet und als Ausgabe nur der verfügbare Speicherplatz angezeigt. Anschließend wird mit „tail“ die erste Zeile (der Spaltentitel) entfernt und Avail
die Zahlen werden abschließend mit „datamash“ summiert.
Antwort2
Beachten Sie bei dem df
Befehl, dass Sie zum Ausschließen von virtuellen RAM-Disk-Einträgen wie den folgenden Parameter /dev
verwenden :-x
df -x tmpfs -x devtmpfs --total -h
Eine andere Möglichkeit hierfür ist der lsblk
Befehl
-l
Ausgabe im Listenformat-n
Überspringen der Kopfzeile-b
in Bytes drucken-o
gibt die angegebene(n) Spalte(n) ausFSAVAIL
Verfügbare/freie Größe des Druckdateisystems
lsblk -l -n -b -o FSAVAIL | grep -v ^$ | \
awk '{sum+=$1} END{print sum}' | numfmt --to=iec
Verwenden Sie es grep
, um leere Zeilen auszuschließen, awk
die erste Spalte zu summieren und schließlich numfmt
Bytes in ein „für Menschen lesbares“ Format zu konvertieren.