http://qs1969.pair.com?node_id=447058


in reply to Re^2: disk space utilization
in thread disk space utilization

Thanks for the info graff, the use of an expression grep "/^" in the middle of my arguement will only report back the line of output in the df -k that has a slash that is immediately followed by an end of line tag (anchor)- thereby only returning the root partition, as opposed to only doing a basic grep for a slash, which will return every slice starting with a slash (working in ksh).
Is there any way I can incorporate your 'one-liner' into my script? As this is only one function out of several that needs to be performed.

Good judgement comes with experience. Unfortunately, the experience usually comes from bad judgement.

Replies are listed 'Best First'.
Re^4: disk space utilization
by graff (Chancellor) on Apr 14, 2005 at 03:34 UTC
    If what you want is to get the available space on a specific disk volume from within a perl script, I'd do something like this:
    my $targ_vol = "/"; my @df_output = `df -k $targ_vol`; # output should be two lines: # first line is column headings, second line is data my %df_data; if ( @df_output ) { my @headings = split( /\s+/, $df_output[0] ); my @data = split( /\s+/, $df_output[1] ); @df_data{@headings} = @data; } print "available on $targ_vol: $df_data{Avail}\n"; # (your version of df might use some string similar to but different f +rom "Avail")
    You shouldn't have a problem if you're just looking at "/".

    (update: if you're looking at some path other than "/", you need to be careful about knowing whether it's on some different file system, and figuring out whether that file system is currently mounted -- if it isn't, df will give you info about "/" instead. And God help you if it's mounted as NFS, and the NFS server has gone down...)

    (update: BTW, when I try "df | egrep '/^'", nothing comes out, which is what I would expect; but if I do "df | egrep '/$'", I get the line that ends with a slash. That's what I don't understand about your usage in the OP -- I think it can't work as posted, unless your "egrep" is way different from mine...)