perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 19
Click for quality!




11.02.2012 / 07:10

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragFilesystem/Mountpoint mit dem meisten freien Speicherplatz
Seitenanfang
Hi,

ich müsste in einem Perl-Script herausbekommen, auf welchem Filesystem bzw. Mountpoint am meisten freier Speicherplatz zur Verfügung steht um automatisiert neuangelegte Dateien zu verteilen.

Ich habe zwar 'libfilesys-diskspace-perl' gefunden, habe aber keinen blassen Dunst, wie ich das hierfür anwenden könnte.

Momentan sieht das ganze so aus:


$mostavail = `df -k -t xfs 2>/dev/null | grep "home" | sort -rnk 4 | head -n 1 | awk '{print \$5}'`;

Dabei weiss ich vorher auch nicht, was alles unter /home/* gemountet ist, möchte aber immer den mountpoint mit dem meisten freien Speicherplatz bekommen.

Ich bin leider immer noch blutiger Anfänger in Perl.

Kann mir evtl jemand einen Tipp oder ein kurzes Beispiel geben?

Danke schonmal

Datum: 13.11.2009-15:12

Beitragre: Filesystem/Mountpoint mit dem meisten freien Speicherplatz
Seitenanfang
so, ich habe jetzt sowas

#!/usr/bin/perl
use Filesys::DiskSpace;

my %myhash;

foreach my $homedir ( "dir0", "dir1", "dir2", "dir3" ) {

my $dir = "/home/$homedir";

if (-d "$dir") {

my ($fs_type, $fs_desc, $used, $avail, $fused, $favail) = df $dir;

# calculate free space in %
my $df_free = (($avail) / ($avail+$used)) * 100.0;

$myhash{$dir} = $df_free;
# display message
# my $out = sprintf("Disk space on $dir == %0.2f\n",$df_free);
# print $out;

} else {
print "$dir is not available\n";
}
}

@keys = sort {
$myhash{$b} <=> $myhash{$a}
} keys %myhash;

foreach $key(@keys){
print "$key = $myhash{$key}\n";
}

Wie bekomme ich jetzt aber nur eine Zeile des Hashes?

Datum: 17.11.2009-13:01

Beitragre: Filesystem/Mountpoint mit dem meisten freien Speicherplatz
Seitenanfang
#!/usr/bin/perl
use Filesys::DiskSpace;

my $search_dir='/home';

my $df_max;
my $dir_max;
for my $dir ( glob("$search_dir/*") )
{
if(-d $dir)
{
# used and free space
my ($used, $avail) = (df $dir)[2,3];
# calculate free space in %
my $df_free = ( $avail/( $avail+$used ) ) * 100.0;
if(!defined($df_max) or $df_free>$df_max)
{
$df_max=$df_free;
$dir_max=$dir;
}
}
}

if(defined($df_max) && $dir_max)
{
printf("Max disk space on $dir_max width %0.2f%%\n",$df_max);
}
else
{
print "No dirs found in $search_dir!\n";
}

Datum: 17.11.2009-19:04

-






-
-