Ich schreibe einen Installer in Bash. Der Benutzer wechselt in das Zielverzeichnis und führt das Installationsskript aus. Die erste Aktion sollte daher darin bestehen, zu überprüfen, ob genügend Speicherplatz vorhanden ist. Ich weiß, dass df alle Dateisysteme melden wird, aber ich habe mich gefragt, ob es eine Möglichkeit gibt, den freien Speicherplatz nur für die Partition zu erhalten, auf der sich das Zielverzeichnis befindet.
Bearbeiten - die Antwort, die ich mir ausgedacht habe
df $PWD | awk '/[0-9]%/{print $(NF-2)}'
Etwas seltsam, da df seine Ausgabe so zu formatieren scheint, dass sie zum Terminal passt. Bei einem langen Einhängepunktnamen wird die Ausgabe also um eine Linie verschoben
-P
Flaggedf
, um alles in einer Zeile zu erhalten.du -hs .
mit dem Speicherplatz, der für das aktuelle Verzeichnis verwendet wird.Antworten:
Ja:
für das aktuelle Verzeichnis.
Wenn Sie ein bestimmtes Verzeichnis überprüfen möchten.
Möglicherweise möchten Sie den
stat(1)
Befehl auch überprüfen, wenn Ihr System über ihn verfügt. Sie können Ausgabeformate angeben, um das Parsen Ihres Skripts zu vereinfachen. Hier ist ein kleines Beispiel:quelle
-k
. (coreutils df ist standardmäßig auf 1k-Blöcke eingestellt, sodass Sie unter Linux zwar ziemlich sicher sind - aber wenn Sie coreutils habenstat
, haben Sie das , und das ist noch sicherer - kein Parsen erforderlich).%a*%s
anstelle von sein%a*%S
. Ich bin mir nicht sicher, ob dies ein Unterschied oder ein Tippfehler ist.%S
(Kapital) nach der Manpage auf RedHat. Ich kann kein Dateisystem finden,%s != %S
auf das ich auf den wenigen RedHats auch Zugriff habe, kann also nicht überprüfen :-(df
Befehl: Speicherplatzbelegung des Dateisystems meldendu
Befehl: Schätzen Sie den SpeicherplatzbedarfGeben Sie
df -h
oder ein,df -k
um freien Speicherplatz aufzulisten:ODER
du
zeigt an, wie viel Speicherplatz eine oder mehrere Dateien oder Verzeichnisse belegen:Die
-s
Option fasst den von einem Verzeichnis verwendeten Speicherplatz zusammen und-h
bietet eine für Menschen lesbare Ausgabe.quelle
Ich denke, dies sollte ein Kommentar oder eine Änderung der Antwort von ThinkingMedia auf genau diese Frage sein ( Überprüfen Sie den freien Speicherplatz für die aktuelle Partition in Bash ), aber ich darf keine Kommentare abgeben (nicht genügend Wiederholungen) und meine Bearbeitung wurde abgelehnt (Grund: "Dies sollte ein Kommentar oder eine Antwort sein"). Also bitte, Kräfte des SO-Universums, verdammt mich nicht dafür, dass ich die "Antwort" eines anderen wiederhole und korrigiere. Aber jemand im Internet hat sich geirrt! ™ und sie ließen mich das nicht reparieren.
Der Code
hat einen wesentlichen Fehler: Ja, es wird
50G
kostenlos als 50 ausgegeben - aber es wird auch5.0M
kostenlos als 50 oder3.4G
kostenlos als 34 oder ausgegeben15K
kostenlos als 15 .Um ein Skript zu erstellen, mit dem nach einer bestimmten Menge an freiem Speicherplatz gesucht werden soll, müssen Sie die Einheit kennen, gegen die Sie prüfen. Entfernen Sie es (wie
sed
im obigen Beispiel). Die Zahlen machen keinen Sinn mehr.Wenn Sie tatsächlich möchten, dass es funktioniert, müssen Sie Folgendes tun:
Auch für einen Installer
df -k $INSTALL_TARGET_DIRECTORY
könnte dies sinnvoller sein alsdf -k "$PWD"
. Beachten Sie schließlich, dass das--output
Flag nicht in jeder Version von df / linux verfügbar ist.quelle
--output=avail
Auf diese Weise erhalten Sie die Größe in Bytes.
quelle
--output=avail
Ein vollständiges Beispiel für jemanden, der damit einen Mountpunkt auf einem Server überwachen möchte. In diesem Beispiel wird überprüft, ob / var / spool unter 5G liegt, und der Person eine E-Mail gesendet:
quelle
Um die Verwendung des spezifischen Verzeichnisses in GB oder TB unter Linux zu kennen, lautet der Befehl:
df -h / dir / inner_dir /
df -sh / dir / inner_dir /
und um die Verwendung des spezifischen Verzeichnisses in Bits unter Linux zu kennen, lautet der Befehl:
df-k / dir / inner_dir /
quelle
Geben Sie die Befehlsshell ein:
oder
oder
Es wird die Liste der freien Speicherplätze für jeden Einhängepunkt angezeigt.
Sie können auch eine einzelne Spalte anzeigen / anzeigen.
Art:
Hinweis: Hier ist 3 die Spaltennummer. Sie können auswählen, welche Spalte Sie benötigen.
quelle