52 lines
1.3 KiB
Perl
52 lines
1.3 KiB
Perl
#!/usr/bin/perl -P
|
|
|
|
# $RCSfile: scan_df,v $$Revision: 4.1 $$Date: 92/08/07 17:20:33 $
|
|
|
|
# This report points out filesystems that are in danger of overflowing.
|
|
|
|
(chdir '/usr/adm/private/memories') || die "Can't cd to memories: $!\n";
|
|
`df >newdf`;
|
|
open(Df, 'olddf');
|
|
|
|
while (<Df>) {
|
|
($fs,$kbytes,$used,$avail,$capacity,$mounted_on) = split;
|
|
next if $fs =~ /:/;
|
|
next if $fs eq '';
|
|
$oldused{$fs} = $used;
|
|
}
|
|
|
|
open(Df, 'newdf') || die "scan_df: can't open newdf";
|
|
|
|
while (<Df>) {
|
|
($fs,$kbytes,$used,$avail,$capacity,$mounted_on) = split;
|
|
next if $fs =~ /:/;
|
|
next if $fs eq '';
|
|
$oldused = $oldused{$fs};
|
|
next if ($oldused == $used && $capacity < 99); # inactive filesystem
|
|
if ($capacity >= 90) {
|
|
#if defined(mc300) || defined(mc500) || defined(mc700)
|
|
$_ = substr($_,0,13) . ' ' . substr($_,13,1000);
|
|
$kbytes /= 2; # translate blocks to K
|
|
$used /= 2;
|
|
$oldused /= 2;
|
|
$avail /= 2;
|
|
#endif
|
|
$diff = int($used - $oldused);
|
|
if ($avail < $diff * 2) { # mark specially if in danger
|
|
$mounted_on .= ' *';
|
|
}
|
|
next if $diff < 50 && $mounted_on eq '/';
|
|
$fs =~ s|/dev/||;
|
|
if ($diff >= 0) {
|
|
$diff = '(+' . $diff . ')';
|
|
}
|
|
else {
|
|
$diff = '(' . $diff . ')';
|
|
}
|
|
printf "%-8s%8d%8d %-8s%8d%7s %s\n",
|
|
$fs,$kbytes,$used,$diff,$avail,$capacity,$mounted_on;
|
|
}
|
|
}
|
|
|
|
rename('newdf','olddf');
|