Приведу пример примитивного рестартера TrinityCore под Linux:
Создаем первый файл auth.sh с содержимым:
#!/bin/bash
while :; do
/home/trinity/release/bin/authserver -c /home/trinity/release/etc/authserver.conf
sleep 10
done
По нему будет запускаться сервер идентификации. Если он работает без ошибок, то в /etc/rc.local можно прописать путь к этому файлу, чтобы он грузился при запуске системы.
Создаем второй файл world.sh с содержимым:
#!/bin/sh
logfile='/home/trinity/release/bin/logs/shserver.log'
srvrun='/home/trinity/release/bin/worldserver'
srvname=worldserver
outfile='/home/trinity/release/bin/logs/crash.log'
if [ `ps ax | grep "$srvrun" | grep -v "grep" | wc -l` = 0 ]; then
kill `ps xu | grep "$srvname" | grep "$srvrun" | grep -v "grep" | awk '{print $2}'`
echo "Server CRASHED !!! Start Bugreport System" `date` >> $outfile
echo "Server.log Log FILE Last 30 Lines:" >> $outfile
cat $logfile | tail -n 30 >> $outfile
echo "END bugtracker system." >> $outfile
sleep 20 && $srvrun
fi
exit 0
По нему будет запускаться игровой сервер. Запускать можно через screen командой:
screen -AmdS world /home/trinity/release/bin/world.sh