This is part of The Pile, a partial archive of some open source mailing lists and newsgroups.
Subject: RE: File size analyser utility From: Gregory Hosler <gregory.hosler@eno.ericsson.se> Date: Thu, 06 Jul 2000 10:32:52 +0800 (SGT) On 05-Jul-00 Anurag Jalan wrote: > Hi all, > > On my Redhat box i have a 9 Gb HD with 4 primary partitions : > > /boot - 50 Mb > / - 6.5 Gb > /home - 2.5 Gb > and SWAP - 128 Mb > > To my horror, I found that the /home partition is 89 % full.., despite the > fact that i have only 10 users and my Web server is installed at > /usr/local/apache .. > > There are so many sub directories in the user directories that it is nearly > impossible to scan all of them manually .. > > Is there a utility that can help me locate the space hogs ? start with du. as root: cd /home du -s * This will tell you were the bulk lies. Then go into that directory and repeat the du. I also wrote a script that will do a du in a directory, and sort the results, giving you a sorted list of usage. #!/bin/bash du -s * | awk '{printf("%6s %s\n", $1, $2)}' | sort === Subject: Re: File size analyser utility From: russb@starpower.net Date: Wed, 5 Jul 2000 23:05:12 -0400 (EDT) On Wed, 5 Jul 2000, Anurag Jalan wrote: > Is there a utility that can help me locate the space hogs ? See if this works for you. ------------ CUT HERE -------------- #!/usr/bin/perl # filename: /root/bin/diskhogs # By Russell W. Behne - russb@starpower.net # monitor user accounts for disk space format top = Username (UID) Home Directory Disk Space Security ------------------------------------------------------------ . format STDOUT = @<<<<<<<<<<<<< @<<<<<<<<<<<<<<<< @<<<<<<<<<< @<<<<<<<< $uname, $home_dir, $disk, $warn . open (PASSWD, "/etc/passwd") || die "Can't open passwd: $!\n"; USER: while (<PASSWD>) { chop; ($uname,$pass,$uid,$gid,$junk,$home_dir,$junk) = split(/:/); if ($uname eq "root" || $uname eq "nobody" || substr($uname,0,2) eq "uu" || ($uid <= 100 && $uid > 0 )) { next USER; } $warn = ($uid == 0 && $uname ne "root") ? "** UID=0" : ""; $warn = ($pass ne "!" && $pass ne "*") ? "** CK PASS" : $warn; $uname .= " ($uid)"; if (-d $home_dir && $home_dir ne "/") { $du = `du -s -k $home_dir`; chop($du); ($disk,$junk) = split(/\t/,$du); $disk .= "K"; } else { $disk = $home_dir eq "/" ? "skiped" : "deleted"; } write; } exit; ------------ CUT HERE -------------- ===