[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Where did the diskusage increase?



Op maandag 10 oktober 2005 16:58, schreef John Plate:
> Hi
>
> I'm looking for a tool that can tell where diskusage has increased
> since last time the tool was run.
>
> Does such a tool exist?
>
> John

I tried to make such a tool for my own use as a bash script.
You must be root to run this script.
The script uses some other tools like du, gakw, .....
Most of them are present on a normal debian system.
Perhaps you must install the dialog pakket.
This script still has some bugs.
and the menu's are written in Dutch.......
and Dutch you will find in the the script code..........

good luck.

martin

---------------------snip under this line-----------------
#!/bin/bash 
# this is a comment
kiesdir () {
#read -p "dit is in kiesdir"
dialog	--clear					\
	--menu "kies een soort bestand" 0 0 0	\
"stand" "een bestand met een stand"		\
"vergelijk" "een bestand met een vergelijking" 2> /tmp/dushell/antwkd
	keus=`cat /tmp/dushell/antwkd`
	if [ $keus = "stand" ]; then
		dirkeus=$dirstand
	else
		dirkeus=$dirverg
	fi
#read -p "$dirstand $dirverg $dirkeus"
}
toonlijst () {
	oud=""
	dir -x $1 > /tmp/dushell/lijst.tmp
if [ -s /tmp/dushell/lijst.tmp ]; then
	tr ' ' '\012' < /tmp/dushell/lijst.tmp > /tmp/dushell/lijst.oud
	mawk '$1 > "" { printf "%s . ", $1 }' /tmp/dushell/lijst.oud 
>/tmp/dushell/lijst
	lijst=`cat /tmp/dushell/lijst`
	dialog --title "kies uit deze lijst"		\
		--menu "$2" 0 0 0			\
		$lijst 2> /tmp/dushell/antwlijst
	oud=`cat /tmp/dushell/antwlijst`
else
	return
fi
}
maakaktueel() {
	dialog --yesno "aktuele stand opbergen inclusief gemounte filesystems ?" 0 0
	jn=$?
	if [  $jn -eq "0" ]; then
		optie=""
		optietxt="_Y"
	elif [ $jn -eq "1" ]; then
		optie=-x
		optietxt="_N"
	else
		return
	fi
	dialog --infobox "du doet nu zijn werk. even geduld a.u.b." 0 0
	du $optie / > /tmp/dushell/dushell.tmp 2> /tmp/dushell/du-error
	dialog --infobox "du is klaar. nu sorteren, even geduld a.u.b." 0 0
	mawk '{printf "%s%8s\n", $2, $1 }' /tmp/dushell/dushell.tmp 
> /tmp/dushell/dushell+$DATUM
	sort < /tmp/dushell/dushell+$DATUM > $NIEUW$optietxt
	cp $NIEUW$optietxt $dirstand 
#	VASTGELEGD="ja"
}
# ----------------------------------------------------------- einde funkties
if ! [ -d /tmp/dushell ]; then
	mkdir /tmp/dushell
fi
if ! [ -d /var/dushell/stand ]; then
	mkdir -p /var/dushell/stand
fi
if ! [ -d /var/dushell/verg ]; then
	mkdir -p /var/dushell/verg
fi
dirstand=/var/dushell/stand
dirverg=/var/dushell/verg
date --date='now' +%Y-%m-%d_%T > /tmp/dushell/datum
DATUM=`cat /tmp/dushell/datum`
NIEUW="/tmp/dushell/dushell_"$DATUM 
while [ 0 ]; do
#read -p "--- vlak voor het hoofdmenu ---"
oud=""
dialog	--title "dushell  H O O F D - M E N U" \
		--clear									\
		--menu "Wat wil je doen ?" 0 0 0	\
"aktueel" "aktuele stand van de bestandsstruktuur vastleggen"		\
"maak" "maak nieuwe vergelijking met eerder vastgelegde stand"		\
"inzien" "inzien van een stand of vergelijking"			\
"verwijder" "eerder vastgelegd bestand verwijderen"			\
"naam" "eerder vastgelegd bestand een nieuwe naam geven"		\
"help" "een korte uitleg over dit programma"				\
"einde" "                            tot de volgende keer....."		\
							2> /tmp/dushell/antw1
if [ $? = 1 -o $? = 255 ]; then
	break
fi
#while [ 0 ]; do
ANTWOORD=`cat /tmp/dushell/antw1`
if [ $ANTWOORD = "aktueel" ]; then
	if [ -z $VASTGELEGD ]; then
		maakaktueel
	else
		dialog --msgbox "dit was al gebeurd." 0 0
	fi
elif [ $ANTWOORD = "maak" ]; then
	toonlijst $dirstand "de OUDE stand voor de vergelijking"
	
	if [ -z $VASTGELEGD ]; then
		maakaktueel
	fi
	dialog --infobox "index klaarzetten, even geduld a.u.b." 0 0
	mawk '{print $1 }' $NIEUW$optietxt > /tmp/dushell/dushell+nieuw
	mawk '{print $1 }' $dirstand/$oud > /tmp/dushell/dushell+oud
	sort -mu /tmp/dushell/dushell+oud /tmp/dushell/dushell+nieuw 
> /tmp/dushell/index
	index=`cat /tmp/dushell/index`
	vorig=`cat $dirstand/$oud`
	wissel=0
	teller=0
	for tekst in $vorig
	do
#echo $tekst
#read
 		if [ $wissel -eq "0" ]; then
			wissel=1
			teller=`expr $teller + 1`
			vorigindex[teller]=$tekst
		else
			wissel=0
			vorigwaarde[teller]=$tekst
		fi	
	done
#read -p "echo ${vorigindex[5]} ${vorigwaarde[5]}"
	nieuw=`cat $NIEUW$optietxt`
read -p "optie: $optietxt"
	wissel=0
	teller=0
	for tekst in $nieuw
	do
		if [ $wissel -eq "0" ]; then
			wissel=1
			teller=`expr $teller + 1`	
			nieuwindex[teller]=$tekst
		else
			wissel=0	
			nieuwwaarde[teller]=$tekst
		fi	
	done
	clear
	aantaldirs=`wc -w /tmp/dushell/index|cut -b 1-7`
#echo "$aantaldirs"
#teller=900
#echo "$(($teller * 100 / $aantaldirs))"
#read -p "aantaldirs = $aantaldirs"
	echo -n "" > /tmp/dushell/oud+nieuw
	teller=0
	teller2=0
	nro=1
	nrn=1
	for dirnaam in $index
	do
		oudveld=0
		nieuwveld=0
		if [ "$dirnaam" = ${vorigindex[nro]} ]; then
				oudveld=${vorigwaarde[nro]}
				nro=`expr $nro + 1`
		fi
		if [ "$dirnaam" = ${nieuwindex[nrn]} ]; then
				nieuwveld=${nieuwwaarde[nrn]}
				nrn=`expr $nrn + 1`
		fi
		meer="0"
		minder="0"
		if [ `expr $oudveld` -lt `expr $nieuwveld` ]; then
			meer=`expr $nieuwveld - $oudveld`
		elif [ `expr $oudveld` -gt `expr $nieuwveld` ]; then
			minder=`expr $oudveld - $nieuwveld`
		fi
		echo -e "$oudveld\t$nieuwveld\t$meer\t$minder\t$dirnaam" 
>> /tmp/dushell/oud+nieuw
#read 
		teller=`expr $teller + 1`
		procent=$(($teller * 100 / $aantaldirs))
		if [ `expr $procent` -gt `expr $teller2` ]; then
#			echo -e "$(($teller * 100 / $aantaldirs)) \n" > /tmp/dushell/procent
			echo -e "$procent \n" > /tmp/dushell/procent
			teller2=`expr $procent + 5`
			dialog --guage "vergelijking opbouwen, even geduld a.u.b." 0 0 0 
< /tmp/dushell/procent
		fi
	done
	mawk '{ printf "%8s%8s%8s%8s %s\n", $1, $2, $3, $4, 
$5 }' /tmp/dushell/oud+nieuw > /tmp/dushell/oud+nieuw.tmp
read -p "optie=$optietxt   oud=$oud"
read -p "  /tmp/dushell/oud+nieuw.tmp $dirverg/vergelijk_$DATUM"
read -p "  /tmp/dushell/oud+nieuw.tmp $dirverg/vergelijk_$DATUM$optietxt"
read -p "  /tmp/dushell/oud+nieuw.tmp $dirverg/vergelijk_$DATUM$optietxt.$oud"
#	cp /tmp/dushell/oud+nieuw.tmp $dirverg/vergelijk_$DATUM$optietxt.$oud
	cp /tmp/dushell/oud+nieuw.tmp $dirverg/$oud.vergelijk_$DATUM$optietxt 
#	mv /tmp/dushell/oud+nieuw.tmp $dirverg/vergelijk_$DATUM
	dialog --textbox $dirverg/$oud.vergelijk_$DATUM$optietxt 0 0
elif [ $ANTWOORD = "inzien" ]; then
	dirdiep=1
	dirsel=/
	kiesdir
	toonlijst $dirkeus "een bestand om in te zien"
	if [ -n $oud ]; then
		if [ $dirkeus = $dirverg ]; then
			cp $dirverg/$oud /tmp/dushell/inzien.tmp 
	    	echo "     oud   nieuw    meer  minder directory" > /tmp/dushell/klaar
	    	echo " ------- ------- ------- ------- ---------" >> /tmp/dushell/klaar
	    else
			mawk '{printf "%8s %s\n", $2, $1 }' $dirstand/$oud 
> /tmp/dushell/inzien.tmp 
	   		echo "   stand directory" > /tmp/dushell/klaar
	    	echo " ------- ---------" >> /tmp/dushell/klaar
	    fi
      while [ 0 ]; do 
	    cp /tmp/dushell/klaar /tmp/dushell/inzien.klaar
		dialog	--title "I N Z I E N" 					\
				--menu "$oud\n     directory   diepte: \
$dirdiep\n     directory selectie: $dirsel" 0 0 0		\
			"vol" "het volledige overzicht"				\
			"plus" "overzicht van de vermeerderingen"	\
			"min" "overzicht van de verminderingen"	\
			"diepte" "directory   diepte instellen"		\
			"selectie" "directory selectie instellen"	\
			"ruimte" "overzicht van de schijfruimte"		\
			"einde" "       tot de volgende keer....."	\
												2> /tmp/dushell/antwinzien
		if [ $? = 1 -o $? = 255 ]; then
			break
		fi
		inzien=`cat /tmp/dushell/antwinzien`
		if [ $inzien = "vol" ]; then
			cp /tmp/dushell/inzien.tmp /tmp/dushell/inzien.X
		elif [ $inzien = "plus" ]; then	
			mawk '$3 > 0' /tmp/dushell/inzien.tmp > /tmp/dushell/inzien.X
		elif [ $inzien = "min" ]; then
			mawk '$4 > 0' /tmp/dushell/inzien.tmp > /tmp/dushell/inzien.X
		elif [ $inzien = "diepte" ]; then	
			dialog --inputbox "de diepte <$dirdiep> wijzigen in:"	\
							0 0 $dirdiep 2> /tmp/dushell/dirdiep
			dirdiep=`cat /tmp/dushell/dirdiep`
			continue
		elif [ $inzien = "selectie" ]; then
			dialog --inputbox "de selectie <$dirsel> wijzigen in:"	\
							0 0 $dirsel 2> /tmp/dushell/dirsel
			dirsel=`cat /tmp/dushell/dirsel`
			continue
		elif [ $inzien = "ruimte" ]; then
			df > /tmp/dushell/inzien.df
			dialog --textbox /tmp/dushell/inzien.df 0 0
			continue
		elif [ $inzien = "einde" ]; then
			break
		fi
		egrep $dirsel /tmp/dushell/inzien.X > /tmp/dushell/inzien.XX
		if [ $dirdiep = "1" ]; then
				mawk -F "/" 'NF == 2' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
		elif [ $dirdiep = "2" ]; then
				mawk -F "/" 'NF == 3' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
		elif [ $dirdiep = "3" ]; then	
			 	mawk -F "/" 'NF == 4' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
		elif [ $dirdiep = "4" ]; then 
				mawk -F "/" 'NF == 5' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
		elif [ $dirdiep = "5" ]; then 
				mawk -F "/" 'NF == 6' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
		elif [ $dirdiep = "6" ]; then			
				mawk -F "/" 'NF == 7' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
		elif [ $dirdiep = "7" ]; then 
				mawk -F "/" 'NF == 8' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
		elif [ $dirdiep = "8" ]; then	
				mawk -F "/" 'NF == 9' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
		elif [ $dirdiep = "9" ]; then
				mawk -F "/" 'NF == 10' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
		else
				mawk -F "/" 'NF > 0' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
		fi
		dialog --textbox /tmp/dushell/inzien.klaar 0 0
      done
	fi
elif [ $ANTWOORD = "verwijder" ]; then
	kiesdir
	toonlijst $dirkeus "een bestand om te verwijderen"
	if [ -n $oud ]; then 
		dialog --yesno "<$oud> verwijderen" 0 0
		jn=$?
		if [ $jn -eq "0" ]; then 
			rm $dirkeus/$oud	
		fi
	fi
elif [ $ANTWOORD = "naam" ]; then
	kiesdir
	toonlijst $dirkeus "een bestand om de naam van te wijzigen"
	if [ -n $oud ]; then
		dialog --inputbox "geef <$oud> een nieuwe naam:"	\
			0 0 $oud 2> /tmp/dushell/antwnaam
		nieuwenaam=`cat /tmp/dushell/antwnaam|tr " " "_"`
		if [ -n $nieuwenaam ]; then
			if [ $nieuwenaam != $oud ]; then
				mv $dirkeus/$oud $dirkeus/$nieuwenaam
			fi
		fi
	fi
elif [ $ANTWOORD = "help" ]; then
	clear
	cat << EOF
	HALLO,

Dit is de korte helptekst bij dushell.
Hij is nu nog wel heeeeeel errug kort.

EOF
	read -p "geef <ENTER> voor vervolg...." blabla
elif [ $ANTWOORD = "einde" ]; then
	rm /tmp/dushell/*
	break
fi
done
# i love comments



Reply to: