Initial import from FreeBSD RELENG_4:
[dragonfly.git] / contrib / perl5 / eg / scan / scan_df
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');