echo $PATH | grep "/sbin:" || PATH="/sbin:$PATH" #Si on est pas en mode force, et qu'il y a deja un espace d'echange, on recupere son taux d'occupation. La complexite des operations est en partie lie au fait que le Bash ni aucune commande GNU ne gere les nombres decimaux. if [ ${1:-cron} != "force" ]; then [ `swapon -s | wc -l` -gt "0" ] && t=$(echo "scale=1;10*"`swapon -s | tail -n 1 | tr '\t' ' '| tr -s ' ' | cut -d" " -f 3-4 | tr ' ' '/'` | bc | cut -d. -f1) fi #On continue s'il n'y en a pas ou s'il est utilise a plus de la moitie if [ ${t:-19} -lt "15" ]; then applislourdes[0]=gqview && applislourdes[1]=firefox-bin && applislourdes[2]=gimp for ((numerodelignetableau = 0; numerodelignetableau <= 2 ; numerodelignetableau++)); do renice 20 `ps -C ${applislourdes[$numerodelignetableau]} h o pid` 2>/tmp/erreursducreerespace-sh done taille=69 && espacevoulu=`expr $taille + 5` && cd /tmp && espacelibre=`df -m . | tail -1l | tr -s " " | cut -f 4 -d " "` if [ $espacelibre -ge $espacevoulu ] then #Obtention du numero du dernier fichier d'echange en cours d'utilisation s'il y en a un numerodernierfichier=`swapon -s | egrep -o 'knoppix.swp[0-9]+' | tail -n 1|egrep -o '[0-9]'+` if [ $numerodernierfichier ] #S'il y a un chiffre then #On creera le fichier qui suit comme nouvel espace d'echange chiffre=`expr $numerodernierfichier + 1` && nomfichieracreer=`echo $nomfichieracreer$chiffre | tr '[:digit:]' $chiffre | tr -s '[:digit:]'` else #sinon on part sur des valeurs de base nomfichieracreer="knoppix.swp" chiffre={$numerodernierfichier:-0} fi #Quand on ne sait pas par quel nom de fichier commencer, on les passe tous en revue a la suite while test -f $nomfichieracreer do echo $nomfichieracreer" existe." swapon $nomfichieracreer 2>/tmp/erreursducreerespace-sh sortir=$? echo "Le resultat de l'activation de l'utilisation de "$nomfichieracreer" est" $sortir nomfichieracreer=`echo $nomfichieracreer$chiffre | tr '[:digit:]' $chiffre | tr -s '[:digit:]'` echo "Le prochain sera "$nomfichieracreer chiffre=`expr $chiffre + 1` done sortir=${sortir:-255}; if [ $sortir != 0 ]; then echo "Comme le code de sortie resultant du test de l'existence d'un fichier deja existant et eventuellement cours d'utilisation vaut:" && echo $sortir && echo "on cree un nouveau fichier:" $nomfichieracreer dd if=/dev/zero of=$nomfichieracreer bs=1M count=$taille mkswap $nomfichieracreer 2>>/tmp/erreursducreerespace-sh chmod 600 $nomfichieracreer && swapon $nomfichieracreer 2>>/tmp/erreursducreerespace-sh fi swapon -s else echo "Il ne reste que "$espacelibre "Mo de disponible sur /tmp, c'est insuffisant!" fi echo "Certaines erreurs ont pu etre stockees dans /tmp/erreursducreerespace-sh. En cas de manque de place etrange, verifier qu'il n'y a pas de choses stockees sur la partition / dans des dossiers servant normallement de point de montage. Si ca ne suffit pas, il n'y a plus qu'a s'atteler a passer en revue toutes les partitions afin d'y archiver tout ce qui n'a pas besoin d'etre accessible en permanence. Ce script doit etre de preference lance par un nice -n -20" && echo "Exemple de lancement dans un cron: */1 * * * * nice -n -20 "$0 && echo "Exemple de lancement manuel pour creer un fichier en urgence: nice -n -20 "$0" force" && echo "Ne jamais supprimer un fichier d'echange pour faire de la place! Si ca arrive quand meme, il faudra passer une procedure de reparation du systeme de fichiers pour recuperer cette bevue!" fi