#!/bin/bash # Данный скрипт производит мониторинг СТГ-сервера на зависание и в # случае его зависания перезапускает. # Для работы скрипта в настройках СТГ должен быть указан параметер # MonitorDir # Скрипт отрабатывает один раз и выходит. Т.е. он не работает постоянно # и следит за СТГ. Его нужно вызывать по крону или как-то еще с нужной # периодичностью!!! # Путь к файлам монитора. Должен совпадать со значением MonitorDir # в настройках сервера MONITOR_DIR=/var/stargazer/monitor/ # Максимальная задержка обновления файлов монитора в секундах. # При привышении этого значения сервер считается зависшим и будет # перезапущен DT=300 declare -i now=`date +%s` declare -i DT=300 declare -i file_time=0 stg_running=`ps ax | grep stargazer` if [ -z "$stg_running" ] then echo "Stargazer is not running" exit 0 fi #wakeuper for traffcounter ping -c 1 127.0.0.1 > /dev/null sleep 1 for mon in $MONITOR_DIR/* do if [ ! -r $mon ] then echo "no monitor files" exit 0 fi file_time=`stat -c%Y $mon` if (( $now - $file_time > $DT )) then echo "Stargazer is deadlocked!" # Команда остаовки СТГ killall -KILL stargazer rm -f $MONITOR_DIR/* sleep 15 # Команда запуска СТГ /etc/init.d/stargazer start fi done