Restarter

Z WoWResource Wiki
Verze z 12. 2. 2010, 09:11, kterou vytvořil Chronos (diskuse | příspěvky) (Vytvoření stránky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání

Herní emulátory jako takové nejsou bezchybné a může dojít k přerušení jejich funkčnosti v důsledku nějaké chyby. Protože selhávání emu není nic neobvyklého, je potřeba podniknout patřičné kroky k tomu, aby v případě selhání emulátor opět samovolně nastartoval.

Přitom běh emulátoru může skončit také na základě ručně vyvolaných GM příkazů typu .restart, .shutdown či .server shutdown.

Jednoduchá varianta

restarter.sh:

#!/bin/sh
cd /opt/mangos/bin
while true
do
./mangos-worldd
sleep 5
done

Jde o skript s jednoduchou nekonečnou smyčkou, která zajistí restart emu v případě jeho ukončení. Zde vložená prodleva 5 sekund zamezuje přetěžování serveru neustálými pokusy o neúspěšné nastartování emulátoru a růstu velikosti ladících záznamů(logů).

Běh aplikace i při odpojení z terminálu

Pokud chcete, aby spuštěný program běžel i po uzavření okna terminálu, je potřeba jej spouštět ve speciálním režimu.

nohup

Tento příkaz učiní program imunní proti signálu ukončení terminálu SIGHUP.

nohup restarter.sh

screen

Další možností jak docílit běhu aplikace na pozadí je příkaz screen, který vytváří pro program samostatné terminálové sezení nezávislé na aktuálně běžícím terminálu.

Tento nástroj je potřeba do systému většinou doinstalovat pomocí platného balíčkového systému pro danou distribuci.

screen -A -m -d -S mangos123 restarter.sh

Zde parametr -S určuje vlastní označení daného sezení. V tomto případě např. mangos123.

Pak lze např. skript, který umožní ukončit toto spojení by vypadal např. takto:

ps -ef | grep 'SCREEN -A -m -d -S mangos123' | grep -v grep | awk '{print $2}' | xargs -i kill {}

Případně lze zamezit vícenásobnému spuštění pomocí podmínky:

if [ -z `ps -ef | grep 'SCREEN -A -m -d -S mangos123' | grep -v grep | awk '{print $2}'` ]
then
screen -A -m -d -S mangos123 restarter.sh
fi

Vnější odkazy