On Monday, July 1, 2002, at 02:08 , Deb wrote:
[..]
> I'm not sure what approach to take to alleviate the cascading failure.
> I'd prefer to just abort the df, log the error, and complete the rest
> of the script.  Short of totally re-writing the script (it's not mine,
> to begin with), I would like to modify it.  It's a simple system command
> being used:
>
>       system ("/usr/sbin/df -kl");
[..]

well I think that you are rushing at the need to 'rewrite' the
script - as ander's has pointed out - with some fine examples -
of ways to go.

I shall assume that this is a 'solaris box' - since your df is
in /usr/sbin - as is the solarisism - hence the problem in part
is that it is walking through /etc/mnttab trying to do some basic
resolution of what file systems are 'local' - and is getting wedgied
in the usual places that this will get wedgied even IF the command
is executed at the command line - when things are in the hang out
state because of NFS being wonky....

You will notice that 'df' is NOT one of the PPT players.
cf
        http://www.perl.com/language/ppt/what.html

so a part of what needs to be addressed is why this is just
having a 'system(...)' there to blandly generate data? eg:

vladimir: 65:] perl -e 'system ("/usr/sbin/df -kl");'
Filesystem            kbytes    used   avail capacity  Mounted on
/proc                      0       0       0     0%    /proc
/dev/dsk/c0t0d0s0    6192617  765847 5364844    13%    /
fd                         0       0       0     0%    /dev/fd
swap                 2268896    1528 2267368     1%    /tmp
vladimir: 66:]

that is rather 'lame' to begin with... in the main because
you get to view the two 'psuedo' file systems "/proc" and "/dev/fd"
and I am hard pressed as to why those are 'relevant' to "monitor"
this way....

One can sometimes avoid the "hang" by targetting expressly the
actual file systems by name with something like:

        #
     # generic maintenance note - Here is where we Put the
     # types of FS's to check for - that we would want to parse for
     #  
        my $fstype ='ufs|tmpfs';
        my $vfstab = "/tmp/drieux/vfstab" ; # in lieu of "/etc/vfstab"
        my @FS;

        open(FSTAB, $vfstab) || die "unable to open VFSTAB: $!\n";
        while(<FSTAB>) {
        push(@FS, $1)
                if (/^(?:\/dev\S+|swap)+        # only lines that start with
                                                                                # the 
\/dev* or swap
                        \s+\S+\s+                               # skip over the raw 
device
                        (\S+)\s+                                # collect the Mount 
Name
                        (?:$fstype)+                    # if it matches our $fstype    
                 /ox) ;
        }       }

        print "FS: $_ \n" for @FS;
        system("df -lk @FS");

I of course would stuff that in a 'sub' so that you can
just do the 'line out' at the silly bit where you run
the 'system' call....

cf:
        http://www.wetware.com/drieux/pbl/Sys/Admin/vfstabParser.txt


ciao
drieux

---


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to