]> git.stg.codes - stg.git/blobdiff - stargazer/scripts/monitor
Port to CMake, get rid of os_int.h.
[stg.git] / stargazer / scripts / monitor
diff --git a/stargazer/scripts/monitor b/stargazer/scripts/monitor
new file mode 100755 (executable)
index 0000000..1f608a7
--- /dev/null
@@ -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
+
+