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