Wie kann ich den freien Speicherplatz auf aktivierten Volumes mit Perl finden?

StackOverflow https://stackoverflow.com/questions/536160

  •  22-08-2019
  •  | 
  •  

Frage

Ich versuche, eine Datei zu entpacken. Bevor entpacken würde ich freien Speicherplatz wissen, auf dem eingehängten Volumen. Der Plan ist, wenn es nicht genug Platz ist, werde ich es nicht entpacken! Also, wie kann ich den freien Speicherplatz auf einem montierten Volumen zur Verfügung finden Perl? By the way, ich bin mit Perl für Teer und entpacken.

Jeder sagt über df und dh aber diese Befehle auf den Mount-Punkte nicht funktioniert. Was passiert, wenn ich den freien Platz finden will, dass ich an einem Punkt angebracht schreibe in kann?

War es hilfreich?

Lösung

Verwendung von Shell-Befehlen eine einzelne K freier Nummer zu erzeugen, die Perl verwenden:

Wechseln Sie in das Verzeichnis, in dem Sie (falls nicht bereits vorhanden) und führt entpacken wollen:

df . | grep -v '^Filesystem' | awk 'NF=6{print $4}NF==5{print $3}{}'

oder ersetzen "" mit dem eigentlichen Mount-Punkt.

wird der grep des Headers zu befreien und die awk druckt die Kilobyte verfügbar sowohl für die Spaltung und nicht-Split-Linien.

Dies ist auf der folgenden Art von Ausgang basiert, müssen Sie unter Umständen anpassen, wenn Ihr UNIX gibt etwas anderes:

Filesystem    1K-blocks      Used  Available  Use%  Mounted on
/dev/sda4     206434224  56965356  139065176   30%  /
varrun          1037296       132    1037164    1%  /var/run
varlock         1037296         0    1037296    0%  /var/lock
udev            1037296        68    1037228    1%  /dev
devshm          1037296        12    1037284    1%  /dev/shm
/dev/sda2         93327     43535      44973   50%  /boot
/dev/sdc1     155056484  29417456  117824612   20%  /media/extra160
gvfs-fuse-daemon
              206434224  56965356  139065176   30%  /home/pax/.gvfs

Andere Tipps

Sie wahrscheinlich das CPAN wollen Modul Filesys :: DfPortable .

Sie können nur eingebaute in Linux-Befehle verwenden, um das Ergebnis zu erhalten:

my $vol = "/dev/volume";
my $freespace = `df $vol | grep '$vol' | awk '{print \$4}'`;
# free space in megabytes.
$freespace = sprintf("%01.2f", $freespace / 1024);

Versuchen Sie Filesys :: DF (Posix-System) oder Filesys :: DfPortable (Windows auch). Beide benutzen nativen Code zu FS Statistiken aufgelistet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top