#!/bin/bash # Мониторинг Домового Бота # Проверяет каждые 30 секунд и перезапускает если упал LOG_FILE="/home/matrixhasyou/domovoy_bot/logs/monitor.log" WEB_URL="http://localhost:8000" CHECK_INTERVAL=30 # секунд log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" } check_bot() { # Проверяем systemd сервис (бот) if ! sudo systemctl is-active --quiet domovoy-bot; then log "❌ Бот НЕ активен! Перезапуск..." sudo systemctl restart domovoy-bot sleep 5 if sudo systemctl is-active --quiet domovoy-bot; then log "✅ Бот перезапущен успешно" else log "❌ НЕ удалось перезапустить бота!" return 1 fi fi # Проверяем веб-сервер (uvicorn) - ОТКЛЮЧЕНО, бот сам запускает сервер в main.py # WEB_PID=$(pgrep -f "uvicorn.*8000") # if [ -z "$WEB_PID" ]; then # log "❌ Веб-сервер НЕ запущен! Перезапуск..." # cd /home/matrixhasyou/domovoy_bot # source venv/bin/activate # nohup python -m uvicorn web.app:app --host 0.0.0.0 --port 8000 >> logs/web.log 2>&1 & # sleep 5 # WEB_PID=$(pgrep -f "uvicorn.*8000") # if [ -n "$WEB_PID" ]; then # log "✅ Веб-сервер перезапущен (PID: $WEB_PID)" # else # log "❌ НЕ удалось перезапустить веб-сервер!" # return 1 # fi # fi # Проверяем веб-панель # if ! curl -s --max-time 5 "$WEB_URL" > /dev/null; then # log "❌ Веб-панель НЕ отвечает! Перезапуск..." # pkill -f "uvicorn.*8000" # sleep 2 # cd /home/matrixhasyou/domovoy_bot # source venv/bin/activate # nohup python -m uvicorn web.app:app --host 0.0.0.0 --port 8000 >> logs/web.log 2>&1 & # sleep 5 # if curl -s --max-time 5 "$WEB_URL" > /dev/null; then # log "✅ Веб-панель восстановлена" # else # log "❌ Веб-панель НЕ восстановилась!" # return 1 # fi # fi return 0 } log "🚀 Запуск мониторинга Домового Бота (интервал: ${CHECK_INTERVAL}с)" while true; do check_bot sleep $CHECK_INTERVAL done