: ########################################################################## # Title : dusage - show top 10 disk usage users # Author : Heiner Steven # Date : 1994-10-21 # Requires : nawk # Category : System Administration # SCCS-Id. : @(#) dusage 1.2 03/12/19 ########################################################################## PN=`basename $0` # program name VER='1.2' # Determine mail spool directory (BSD/SYSV) for MailDir in /usr/spool/mail /var/mail do [ -d "$MailDir" -a -r "$MailDir" ] && break done Usage () { echo >&2 "$PN - show top 10 directory users, $VER (hs '94) usage: $PN [directory ...] If no directory is specified, $MailDir is the default." exit 1 } [ $# -gt 0 -a "$1" = "-h" ] && Usage # set the default directory [ $# -lt 1 ] && set $MailDir echo "NAME BYTES FILES PERCENT" ls -lL "$@" | nawk ' (NF == 8 || NF == 9 ) { # BSD or SYSV # example of a line: # -rw------- 1 andrea 286282 Oct 21 11:24 andrea # or # -rw------- 1 andrea entw 286282 Oct 21 11:24 andrea Usage [$3] += $(NF-4) # used bytes, username is index Count [$3]++ TotalBytes += $(NF-4) } END { for ( user in Usage ) { if ( Totalbytes != 0 ) { percent = Usage [user] * 100 / TotalBytes } else { percent = 0 } printf "%-15s %12d %d %2d\n", \ user, Usage [user], Count [user], percent } } ' | sort -nr +1 | head exit 0