Eggdrop gyorstalpaló - Crontabolás
Elõször is meg kell adjuk, hogy a bash futtassa le a scriptet:
#!/bin/bash
Aztán megmondjuk neki, hogy a botunk melyik könyvtárban
van:
botdir="/home/loginod/BoTdir"
Melyik scriptet kell futtassa a bot elindításához?
(konfigfile neve)
botscript="konfigfile"
Mi a botunk nickje? (kis-nagy betû közti különbség
számít!) (ez ahhoz kell neki, hogy a pidfile-t megtalálja)
botname="Botocska"
A juzerfajl neve: (kis-nagy betû számít!)
userfile="botocska.user"
Na, a konfigolás ennyi volt, innen már csak a script
van, ezt nem kell értsed, bár jó az! :)
cd $botdir
# beleptunk a bot konyvtaraba es megnezzuk, hogy a bot PID-file-ja
# helyes-e es hogy letezik-e egyaltalan
if test -r pid.$botname; then
botpid=`cat pid.$botname`
if `kill -CHLD $botpid >/dev/null 2>&1`;
then
# minden rendben, kilephetunk
exit 0
fi
# mas esetben gond van. letoroljuk a rossz PID-file-t
echo ""
echo "Doglott a botod pid.$botname fileja -->
torlom"
rm -f pid.$botname
fi
echo ""
echo "Nem fut a botod. --> Ujrainditom..."
echo ""
# megnezzuk, van-e normalis juzerfajl. ha van, akkor siman ujrainditjuk
a botot
if test -r $userfile; then
./$botscript
exit 0
fi
# az elozoben nem talalt, most megnezzuk, hogy juzerfajl-iras kozben
halt-e meg a bot
# ha igy volt, a regit bemasoljuk es ujrainditjuk a botot
if test -r $userfile~new; then
echo "Nincs meg a juzerdfajlod. --> A legutobbi
mentest hasznalom..."
mv $userfile~new $userfile
./$botscript
exit 0
fi
# megnezzuk, van-e backup a juzerfajlrol. ha van, akkor bemasoljuk
es ujrainditjuk a botot
if test -r $userfile~bak; then
echo "Nincs meg a juzerfajlod. --> A backup
juzerfajlt hasznalom..."
cp $userfile~bak $userfile
./$botscript
exit 0
fi
# ha ilyet sem talal, akkor szopas van, mert juzerfajl nelkul nem
inditjuk el a botot,
# mert ertelme sincs...
echo "Nincs juzerfile. --> Nem tudtam visszahozni a botod... :("
exit 0
# szepen kileptunk
Na ennyi. Most kicsit részlketesebben másztam bele, mint
amennyire akartam, de ha mér egyszer legépeltem... :)
Szóval az ellenõrzõ scriptünk készen
van. Most azt kell beállítsuk, hogy ez a script fusson le
bizonyos idõközönként, mondjuk 5 vagy 10 percenként.
Csináljunk egy file-t, pédául "crontabom"
néven, és írjuk bele a következõket:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/loginod/BoTdir/scripts/botchk
Ez most azt jelenti, hogy minden év, minden hónap, minden
nap, minden óra 5-tel osztható percében (tehát
5 percenként) lefuttatja a "botchk" nevû ellenõrzõ-scriptünket,
amit az elõbb írtunk.
Ha nem akarjuk, hogy kapjunk emailt a hibaüzenetekbõl (ami
szerintem nem jó 5let), ezt a sort írjuk a fenti helyett:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/loginod/BoTdir/scripts/botchk
> /dev/null 2>&1
Na, akkor ez is megvan, mostmár csak a crontab daemonnak kell
megmondjuk, hogy ezt a file-t vegye konfigfile-nak. Mondjuk ez a "crontabom"
file legyen a home-unkban. Írjuk be (a bash promptba):
crontab /home/loginod/crontabom
Ha meg akarjuk nézni, hogy megcsinálta-e, akkor írjuk
be:
crontab -l
Ekkor jó esetben kiírja a "crontabom" file tartalmát.
Megjegyzésként annyit, hogy mielõtt még
betesszük crontabba a botot, kipróbálhatjuk, hogy mûködik-e
az ellenõrzõ scriptünk:
/home/loginod/BoTdir/scripts/botchk
Ha bot éppen futott, akkor semmit nem szabad kiírnia,
ha meg nem, akkor meg a megfelelõ hibaüzenettel kellett kilépjen,
és újra kellett indítsa a botot (persze ha volt vmilyen
userfile).
Ezzel megvolnánk, most nézzük, hogy mik az owner
parancsai, hogyan állíthatjuk be praktikusan a dolgokat!