Du - script - Solaris
Quand un montage commence à saturer, la commande "du" est d'un grand secours pour voir quels sont les répertoires qui consomment le plus d'espace disque.
Pour ne pas prendre en compte les sous-arborescences qui appartiennent à un autre point de montage, on va utiliser "du -x" sous Linux ou "du -d" sous Solaris. Par exemple, si on veut savoir qui consomme le plus dans /var, sachant que /var/tmp est séparé (et donc ne nous intéresse pas), on va taper "du -shx /var" sous Linux ou "du -shd /var" sous Solaris.
Mais cela va nous donner uniquement la valeur de /var, et pas tous les sous-répertoires. Si on enlève le "-s", alors on va avoir tous les répertoires et fichiers inclus, et ça risque de vite devenir illisible. Si on veut juste avoir les sous-répertoires de niveau 1, sous Linux, on va taper "du -shx /var/*". Mais sous Solaris, si on tape "du -shd /var/*", il va parcourir tous les sous-répertoires de /var/ (y compris /var/tmp) et leur appliquer le du -shd. Ce fonctionnement peut paraître logique, mais du coup, nous n'avons pas ce que nous voulons. Il n'y a pas d'option sous Solaris pour avoir ce qu'on veut.
Voici donc, ci-dessous, un petit script qui permet de voir ce qu'on veut.
#!/usr/bin/bash
usage() {
echo ""
echo "Prints disk usage of each subdirectory of \"/directory\" on the same mountpoint."
echo "Usage: $0 /directory"
echo ""
}
if [ $# -ne 1 ]
then
echo "Error: wrong number of arguments."
usage
exit 1
fi
DIR="$1"
for i in $(ls -1 "$DIR")
do
RESULT=$(df -h "$DIR/$i" |tail -1 |awk '{print $NF}')
RESULT_DIR=$(df -h "$DIR" |tail -1 |awk '{print $NF}')
if [ "${RESULT}" != "${RESULT_DIR}" ]
then
:
else
du -skd "$DIR/$i" |sort -n
fi
done