Finden Sie verfügbaren Speicherplatz in Unix, ohne die Ausgabe von 'df' zu analysieren

1935
Niraj

Wenn ich tippe df -k ., erhalte ich die folgende Ausgabe

Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 16512936 8650196 7023932 56% / 

Was ich mache, ist die letzte Zeile auszufüllen und das vierte Feld zu extrahieren, um sie richtig zu erhalten.

Wenn der Name des Dateisystems jedoch lang ist, z. B. beispielsweise /dev/niraj-asdsdsd-dsdsdsa, werden dfweitere Details in einer neuen Zeile gedruckt . Nach meiner Logik werden 56% anstelle von 7023932 angezeigt .

Meine Frage ist also, wie man in jeder Situation den genauen freien Platz bestimmt.

1

2 Antworten auf die Frage

3
mpy

Das statDienstprogramm, das zum Abrufen von Dateistatistiken hilfreich ist, kann auch Informationen über Dateisysteme enthalten. Geben Sie einfach die -fOption an.

Stellen Sie jedoch sicher, dass Sie den Einhängepunkt (z. B. /boot) und nicht die Gerätedatei ( /dev/sda1) angeben! Denn im letzteren Fall statwerden Statistiken des /devDateisystems gemeldet, das (bei debian) ein virtuelles Dateisystem ist und nichts mit der physischen Festplatte zu tun hat:

$ mount | grep sda1 / dev / sda1 on / boot-Typ ext2 (rw, relatime, Fehler = continue, user_xattr, acl) $ env stat -f / dev / sda2 Datei: "/ dev / sda1" ID: 0 Name: 255 Typ: tmpfs Blockgröße: 4096 Grundlegende Blockgröße: 4096 Blocks: Total: 2560 Kostenlos: 2560 Verfügbar: 2560 Inodes: Total: 497355 Kostenlos: 496852 $ env stat -f / boot Datei: "/ boot" ID: fe082d7c0c42ea6f Namen: 255 Typ: ext2 / ext3 Blockgröße: 1024 Grundlegende Blockgröße: 1024 Blocks: Total: 99150 Kostenlos: 52490 Verfügbar: 47370 Inodes: Total: 25688 Kostenlos: 25355 
  • Die Differenz zwischen der Anzahl der freien und der verfügbaren Anzahl ergibt sich aus den reservierten Blöcken für root .
  • Ich stellte envsicher, dass nicht der eingebaute stat-Befehl Ihrer Shell (der möglicherweise alle verwendeten Optionen enthält oder nicht) verwendet wird.

-cUm Ihre Frage zu beantworten, können Sie ein benutzerdefiniertes Stat-Ausgabeformat ( ) verwenden, um den verfügbaren Speicherplatz ( %a) abzurufen /:

$ env stat -f -c %a / 1711744 

Dies ist in Blöcken, also seien Sie klug und lassen Sie das System eine Multiplikation mit der Blockgröße in KB-Einheiten ( %S/1024) durchführen, indem Sie die Ausgabe in den bcTaschenrechner leiten:

$ env stat -f -c '%a*%S/1024' / | bc 6846976 

Lass uns überprüfen mit df:

$ df / Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 25066604 16939628 6846976 72% / 

Gut, die gleiche Anzahl wurde gemeldet!

0
Optichip

Niraj - Hast du dir das Dienstprogramm di angesehen? Dies könnte zumindest eine einfachere Methode zum Extrahieren der benötigten Daten bieten. Es bietet eine Ausgabe des CSV-Formats des Festplattenspeichers.

di -c