#!/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