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