#!/opt/local/bin/perl #script that pesters users who use up too much space in /home use strict; use warnings; use Readonly; local $\ = "\n"; #use POSIX 'strftime'; Readonly my $QUOTA => 2_000_000; #2G is reasonable, IMO (1k blocks) Readonly my $HOME_DIR => '/fst/home'; my @HOM_USE_BY_DIR = `sudo dhog -o $HOME_DIR`; die "Error: sudo dhog failed: $! status $? " if ($?); #print @HOM_USE_BY_DIR; my %HOM_USE_BY_DIR; foreach my $i (@HOM_USE_BY_DIR) { chomp $i; #print $i; if ( my ( $sp, $uid ) = $i =~ m{\s?(\d+)\s+/(?:\w+/)*(m\d[a-z]{3}\d{2})} ) { my $KMG = 0; while ( $sp > 1023 ) { #print $sp; $sp = $sp / 1024; ++$KMG; } my $mag_ind = ( $KMG == 0 ) ? 'K' : ( $KMG == 1 ) ? 'M' : ( $KMG == 2 ) ? 'G' : 'some huge multiple of 1024'; $sp = "$sp $mag_ind"; print "$uid: $sp"; } ## end if ( my ( $sp, $uid ) = $i =~ m{\s?(\d+)\s+/(?:\w+/)*(m\d[a-z]{3}\d{2})} ) } ## end foreach my $i (@HOM_USE_BY_DIR) #### my $KiB = <>; my @pref = qw(M G T P);my $i = 0; while($i<@pref){last if $KiB/1024 < 1; $KiB/=1024;$i++} print "$KiB$pref[$i]iB\n" #### perl -ne'chomp(my $KiB =$_); my @pref = qw(K M G T P);my $i = 0; while($i<@pref){ last if $KiB/1024 < 1; $KiB/=1024;$i++} printf "${_}KiB = %.3f$pref[$i]iB\n",$KiB' #### perl -lne 'my $KiB =$_; my @pref = qw(K M G T P); my $i = 0; while($i<@pref){ last if $KiB/1024 < 1; $KiB/=1024; $i++ } printf "${_}KiB = %.3f$pref[$i]iB\n ",$KiB'