#!/bin/bash # Скрипт для управления ботом (запуск/остановка/перезапуск) BOT_DIR="/home/trevor/new_lottery_bot" LOG_FILE="/tmp/bot_single.log" PID_FILE="$BOT_DIR/.bot.pid" case "$1" in start) echo "🚀 Запуск бота..." cd "$BOT_DIR" # Проверяем не запущен ли уже if [ -f "$PID_FILE" ]; then PID=$(cat "$PID_FILE") if ps -p "$PID" > /dev/null 2>&1; then echo "⚠️ Бот уже запущен (PID: $PID)" exit 1 fi fi # Останавливаем все старые процессы pkill -9 -f "python main.py" 2>/dev/null sleep 2 # Запускаем бота . .venv/bin/activate nohup python main.py > "$LOG_FILE" 2>&1 & NEW_PID=$! echo $NEW_PID > "$PID_FILE" sleep 3 if ps -p $NEW_PID > /dev/null; then echo "✅ Бот запущен (PID: $NEW_PID)" echo "📋 Логи: tail -f $LOG_FILE" else echo "❌ Не удалось запустить бота" rm -f "$PID_FILE" exit 1 fi ;; stop) echo "🛑 Остановка бота..." if [ -f "$PID_FILE" ]; then PID=$(cat "$PID_FILE") if ps -p "$PID" > /dev/null 2>&1; then kill -15 "$PID" sleep 2 if ps -p "$PID" > /dev/null 2>&1; then kill -9 "$PID" fi echo "✅ Бот остановлен" else echo "⚠️ Процесс не найден" fi rm -f "$PID_FILE" else # Останавливаем все процессы python main.py на всякий случай pkill -9 -f "python main.py" 2>/dev/null echo "✅ Все процессы остановлены" fi ;; restart) echo "🔄 Перезапуск бота..." $0 stop sleep 2 $0 start ;; status) if [ -f "$PID_FILE" ]; then PID=$(cat "$PID_FILE") if ps -p "$PID" > /dev/null 2>&1; then echo "✅ Бот работает (PID: $PID)" echo "📊 Статистика процесса:" ps aux | grep "$PID" | grep -v grep # Проверяем последние ошибки if grep -q "ERROR.*Conflict" "$LOG_FILE" 2>/dev/null; then echo "⚠️ В логах обнаружены ошибки конфликта!" echo "Последние ошибки:" tail -n 100 "$LOG_FILE" | grep "ERROR.*Conflict" | tail -3 else echo "✅ Ошибок конфликта не обнаружено" fi else echo "❌ Бот не работает (PID файл существует, но процесс не найден)" rm -f "$PID_FILE" fi else # Проверяем запущенные процессы COUNT=$(ps aux | grep "python main.py" | grep -v grep | wc -l) if [ "$COUNT" -gt 0 ]; then echo "⚠️ Найдено $COUNT процессов бота (без PID файла)" ps aux | grep "python main.py" | grep -v grep else echo "❌ Бот не запущен" fi fi ;; logs) if [ -f "$LOG_FILE" ]; then tail -f "$LOG_FILE" else echo "❌ Файл логов не найден: $LOG_FILE" fi ;; *) echo "Использование: $0 {start|stop|restart|status|logs}" echo "" echo "Команды:" echo " start - Запустить бота" echo " stop - Остановить бота" echo " restart - Перезапустить бота" echo " status - Проверить статус бота" echo " logs - Показать логи бота (Ctrl+C для выхода)" exit 1 ;; esac exit 0