Eggdrop gyorstalpaló - Crontabolás



Akkor ha minden oké, akkor már van egy lefordított csupasz botunk, ami mûködõképes. Na de ilyet szinte akárki tud csinálni. Mi legyünk ügyesebbek és készítsünk egy jó botot!
A szempotoknál az egyik legfontosabb, hogy stabil legyen a botunk. Alapban ha az eggdrop elhal vmiért (pl. egy script-hiba miatt összeesik vagy rebootolják alatta a szervert, stb), akkor nekünk kell újraindítanunk. Ezt a problémát úgy oldhatjuk meg a legkönnyebben, ha "becrontaboljuk" a botunkat. Hogy mi az a crontab? Arra való, hogy bizonyos idõben vagy idõközönként a gép végrehartson egy parancsot/lefutasson egy programot. Eredetileg kb olyan feladatokra találták ki, mint hogy minden hónap elsõ napján csináljon egy teljes beackupot a vinyóról vagy ilyesmi. Mi arra fogjuk használni, hogy sûrû idõközönként futtasson le egy bash-scriptet, ami ellenõrzi, hogy fut-e a bot, és ha nem, akkor újraidítja, és kérésre még egy emailt is küld nekünk, hogy elvégezte a feladatát.
Ez mind szép, de a gépen fent kell legyen a crontab daemon, ami elvégzi a feladatot. Ezt úgy tudjuk legegyszerûbben ellenõrizni, hogy beírjuk:
    ps aux | grep crond
Ha nem fut, akkor szóljunk a rootnak, hogy tegye fel/konfigolja be a crond-t. Ha van, akkor remélhetõleg nem lesz gondunk, bár lehet, hogy a root úgy konfigurálta be, hogy sima user nem futattahat crontabot. Na de legyünk optimisták, minden a rendelkezésünkre áll.
A botdir scripts könyvtárában kell legyen egy botchk nevû bashscript, azt írjuk át. Én most beteszem a lényeget ide. Ha megfelelõen átírod, ennek mûködnie kell (gy.k. amit fixed with típussal írtam):

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!


A következõ: Az owner parancsai