Is er voldoende vrije ruimte??? Hans Zoebelein, zocki@goldfish.cube.netDit is een klein script waarmee van tijd tot tijd wordt gecontroleerd of er voldoende vrije ruimte beschikbaar is op alles wat mount laat zien (disks, cdrom, diskette...)Als de ruimte opraakt, wordt iedere X seconden op het scherm een melding weergegeven en 1 mailbericht per gevuld device afgevuurd.#!/bin/sh # # $Id: Tips-HOWTO-NL.sgml,v 1.1.1.1 2004/03/21 21:02:25 cor Exp $ # # # Sinds ik tijdens het compileren mysterieuze foutmeldingen kreeg toen # tmp bestanden mijn disks opvulden, schreef ik dit om een waarschuwing te # krijgen voordat de disks vol zijn. # # Als hiermee werd voorkomen dat je servers explodeerde # stuur dan een lovende email naar zocki@goldfish.cube.net. # Als je site hierdoor afbrandt, dan sorry, maar ik heb je # gewaarschuwd: geen klachten. # Vergeef me alsjeblieft als je echt weet hoe met sed om te gaan :) # # # Alle gekheid op een stokje: Plaats `check_hdspace &' in rc.local. # Controleer iedere $SLEEPTIME sec. op vrije ruimte op devices. # Je zou zelfs je diskettes of tape drives erop kunnen controleren. :) # Als de vrije ruimte onder de $MINFREE (kb) komt, zal er een waarschuwing # op het scherm weerkaatsen en voor elke device waarop een tekort aan # ruimte is geconstateerd een mail worden gestuurd aan $MAIL_TO_ME. # Als er weer meer vrije ruimte is dan de limiet, gaat het ook weer gepaard # met een mailactie. # TEDOEN: Verschillende $MINFREE voor elk device. # Bevrijd /*tmp dirs veilig van oude rommel als er geen vrije ruimte meer is. DEVICES='/dev/sda2 /dev/sda8 /dev/sda9' # device; hier plaats je disks MINFREE=20480 # kb; hieronder een waarschuwing SLEEPTIME=10 # sec; pauze tussen controles MAIL_TO_ME='root@localhost' # dwaas; aan wie de waarschuwingsmail # ------- geen wijzigingen nodig onder deze regel (hopelijk :) ------- MINMB=0 ISFREE=0 MAILED="" let MINMB=$MINFREE/1024 # ja, we zijn strict :) while [ 1 ]; do DF="`/bin/df`" for DEVICE in $DEVICES ; do ISFREE=`echo $DF | sed s#.\*$DEVICE" "\*[0-9]\*""\*[0-9]\*" "\*## | sed s#" ".\*##` if [ $ISFREE -le $MINFREE ] ; then let ISMB=$ISFREE/1024 echo "WAARSCHUWING: Slechts $ISMB vrij op $DEVICE." >&2 #echo "meer code/tekst hier plaatsen" >&2 echo -e "\a\a\a\a" if [ -z "`echo $MAILED | grep -w $DEVICE`" ] ; then echo "WAARSCHUWING: Slechts $ISMB vrij op $DEVICE. (Trigger is ingesteld op $MINMB mb)" \ | mail -s "WAARSCHUWING: Slechts $ISMB vrij op $DEVICE!" $MAIL_TO_ME MAILEDH="$MAILED $DEVICE" MAILED=$MAILEDH # plaats verdere acties, zoals opschonen van # */tmp dirs hier... fi elif [ -n "`echo $MAILED | grep -w $DEVICE`" ] ; then # Verwijder mailed markering als er weer voldoende # diskruimte is. Zodat we klaar staan voor nieuwe # mailactie. MAILEDH="`echo $MAILED | sed s#$DEVICE##`" MAILED=$MAILEDH fi done sleep $SLEEPTIME done