home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl502b.zip / eg / scan / scan_df next >
Text File  |  1994-10-18  |  1KB  |  52 lines

  1. #!/usr/bin/perl -P
  2.  
  3. # $RCSfile: scan_df,v $$Revision: 4.1 $$Date: 92/08/07 17:20:33 $
  4.  
  5. # This report points out filesystems that are in danger of overflowing.
  6.  
  7. (chdir '/usr/adm/private/memories') || die "Can't cd to memories: $!\n";
  8. `df >newdf`;
  9. open(Df, 'olddf');
  10.  
  11. while (<Df>) {
  12.     ($fs,$kbytes,$used,$avail,$capacity,$mounted_on) = split;
  13.     next if $fs =~ /:/;
  14.     next if $fs eq '';
  15.     $oldused{$fs} = $used;
  16. }
  17.  
  18. open(Df, 'newdf') || die "scan_df: can't open newdf";
  19.  
  20. while (<Df>) {
  21.     ($fs,$kbytes,$used,$avail,$capacity,$mounted_on) = split;
  22.     next if $fs =~ /:/;
  23.     next if $fs eq '';
  24.     $oldused = $oldused{$fs};
  25.     next if ($oldused == $used && $capacity < 99);    # inactive filesystem
  26.     if ($capacity >= 90) {
  27. #if defined(mc300) || defined(mc500) || defined(mc700)
  28.     $_ = substr($_,0,13) . '        ' . substr($_,13,1000);
  29.     $kbytes /= 2;        # translate blocks to K
  30.     $used /= 2;
  31.     $oldused /= 2;
  32.     $avail /= 2;
  33. #endif
  34.     $diff = int($used - $oldused);
  35.     if ($avail < $diff * 2) {    # mark specially if in danger
  36.         $mounted_on .= ' *';
  37.     }
  38.     next if $diff < 50 && $mounted_on eq '/';
  39.     $fs =~ s|/dev/||;
  40.     if ($diff >= 0) {
  41.         $diff = '(+' . $diff . ')';
  42.     }
  43.     else {
  44.         $diff = '(' . $diff . ')';
  45.     }
  46.     printf "%-8s%8d%8d %-8s%8d%7s    %s\n",
  47.         $fs,$kbytes,$used,$diff,$avail,$capacity,$mounted_on;
  48.     }
  49. }
  50.  
  51. rename('newdf','olddf');
  52.