#!/bin/bash # ============================================ # 启动 sanguo_quant_live 自动监听服务 # 启动后,任何代码修改都会自动触发部署回测 # 完全无人值守! # ============================================ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" LOG_FILE="$SCRIPT_DIR/auto_watcher.log" PID_FILE="$SCRIPT_DIR/auto_watcher.pid" start() { echo "启动 sanguo_quant_live 自动监听服务..." # 检查是否已经运行 if [ -f "$PID_FILE" ]; then PID=$(cat "$PID_FILE") if kill -0 "$PID" 2>/dev/null; then echo "❌ 自动监听服务已经在运行 (PID: $PID)" exit 1 fi fi # 后台启动(在虚拟环境中) nohup bash -c "source '$SCRIPT_DIR/vnpy_env/bin/activate' && python3 '$SCRIPT_DIR/auto_watcher.py'" >> "$LOG_FILE" 2>&1 & PID=$! echo "$PID" > "$PID_FILE" echo "✅ 自动监听服务已启动 (PID: $PID)" echo "📝 日志: $LOG_FILE" echo "🔍 现在您修改任何代码(策略/框架/配置)都会自动触发部署回测!" echo "🎯 完全无人值守,喝茶去吧!" } stop() { echo "停止自动监听服务..." if [ ! -f "$PID_FILE" ]; then echo "❌ 自动监听服务没有运行" exit 1 fi PID=$(cat "$PID_FILE") kill "$PID" 2>/dev/null rm -f "$PID_FILE" echo "✅ 自动监听服务已停止" } status() { if [ -f "$PID_FILE" ]; then PID=$(cat "$PID_FILE") if kill -0 "$PID" 2>/dev/null; then echo "✅ 自动监听服务正在运行 (PID: $PID)" else echo "❌ PID 文件存在,但进程不存在" fi else echo "❌ 自动监听服务没有运行" fi } case "${1:-start}" in start) start ;; stop) stop ;; status) status ;; restart) stop sleep 1 start ;; *) echo "用法: $0 {start|stop|status|restart}" exit 1 ;; esac