X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/4271ab433cd55bbd2612292bcf39e4dc3d7274f1..0907aa4037b12b6b88ee24495d4577a064d4f8db:/projects/stargazer/scripts/monitor diff --git a/projects/stargazer/scripts/monitor b/projects/stargazer/scripts/monitor new file mode 100755 index 00000000..1f608a71 --- /dev/null +++ b/projects/stargazer/scripts/monitor @@ -0,0 +1,66 @@ +#!/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 + +