]> git.stg.codes - stg.git/blob - projects/stargazer/scripts/monitor
Use std::lock_guard instead of STG_LOCKER.
[stg.git] / projects / stargazer / scripts / monitor
1 #!/bin/bash
2
3 # Данный скрипт производит мониторинг СТГ-сервера на зависание и в 
4 # случае его зависания перезапускает.
5 # Для работы скрипта в настройках СТГ должен быть указан параметер
6 # MonitorDir 
7 # Скрипт отрабатывает один раз и выходит. Т.е. он не работает постоянно 
8 # и следит за СТГ. Его нужно вызывать по крону или как-то еще с нужной
9 # периодичностью!!!
10
11
12 # Путь к файлам монитора. Должен совпадать со значением MonitorDir 
13 # в настройках сервера
14 MONITOR_DIR=/var/stargazer/monitor/
15
16
17 # Максимальная задержка обновления файлов монитора в секундах.
18 # При привышении этого значения сервер считается зависшим и будет 
19 # перезапущен
20 DT=300
21
22
23
24
25 declare -i now=`date +%s`
26 declare -i DT=300
27 declare -i file_time=0
28
29 stg_running=`ps ax | grep stargazer`
30 if [ -z "$stg_running" ]
31 then
32     echo "Stargazer is not running"
33     exit 0
34 fi
35
36 #wakeuper for traffcounter
37 ping -c 1 127.0.0.1 > /dev/null
38 sleep 1
39
40 for mon in $MONITOR_DIR/*
41 do
42     if [ ! -r $mon ]
43     then
44         echo "no monitor files"
45         exit 0
46     fi
47     file_time=`stat -c%Y $mon`
48
49     if (( $now - $file_time > $DT )) 
50     then
51         echo "Stargazer is deadlocked!"
52                 
53         # Команда остаовки СТГ
54         killall -KILL stargazer
55                 
56         rm -f $MONITOR_DIR/*
57         sleep 15
58         
59         # Команда запуска СТГ
60         /etc/init.d/stargazer start
61         
62     fi
63     
64 done
65
66