Files
exchange-monitor-go/start.sh
T
jackyu66gitandClaude Opus 4.6 d38782490c feat: 重构为三所价差异动监控系统
删除 HyperLiquid + 全部交易功能,构建自适应 surge 检测器。
- 新增 surge_detector.go: 每币独立滚动窗口基线,检测三所价差异常飙升
- 新增 SpreadCard/SurgeCard 前端组件
- 保留 momentum/trend/cumulative/trend_filter 扫描功能
- 更新文档和配置以反映新系统

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-08 02:01:18 +08:00

99 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# exchange-monitor 启动脚本
# 自动检测端口占用并清理旧进程
# 用法: ./start.sh [--clean] [--rebuild]
# --clean 删除数据库后重新启动(数据库重置)
# --rebuild 强制重编译(即使源码无变更)
set -e
cd "$(dirname "$0")"
PORT=8888
BIN="./exchange-monitor"
LOG="exchange-monitor.log"
GO_CMD="/home/jack/.local/go/bin/go"
# 解析参数
CLEAN_DB=false
FORCE_REBUILD=false
for arg in "$@"; do
case "$arg" in
--clean) CLEAN_DB=true ;;
--rebuild) FORCE_REBUILD=true ;;
esac
done
# 清理旧进程(pkill 按进程名匹配,不会匹配到 start.sh 自身)
OLD_PIDS=$(pgrep exchange-monitor 2>/dev/null || true)
if [ -n "$OLD_PIDS" ]; then
echo "[start] 停止旧进程 PID=$OLD_PIDS..."
kill $OLD_PIDS 2>/dev/null || true
sleep 1
# 强制清理
STILL_RUNNING=$(pgrep -f exchange-monitor 2>/dev/null || true)
if [ -n "$STILL_RUNNING" ]; then
echo "[start] 强制终止..."
kill -9 $STILL_RUNNING 2>/dev/null || true
sleep 1
fi
fi
# 可选:删除数据库
if [ "$CLEAN_DB" = true ]; then
DB_PATH="$HOME/Project/exchange-monitor-go/data/trades.db"
if [ -f "$DB_PATH" ]; then
echo "[start] 删除数据库: $DB_PATH"
rm -f "$DB_PATH"
else
echo "[start] 数据库不存在,跳过"
fi
fi
# 设置代理(Clash Verge 本地代理,用于 Binance/OKX/Bitget WS 连接)
export HTTPS_PROXY=http://127.0.0.1:7897
export HTTP_PROXY=http://127.0.0.1:7897
export NO_PROXY="localhost,127.0.0.1"
# 编译
NEED_BUILD=false
if [ ! -x "$BIN" ]; then
NEED_BUILD=true
elif [ "$FORCE_REBUILD" = true ]; then
NEED_BUILD=true
elif [ -n "$(find . -name '*.go' -newer "$BIN" 2>/dev/null | head -1)" ]; then
NEED_BUILD=true
elif [ -n "$(find frontend/dist -newer "$BIN" 2>/dev/null | head -1)" ]; then
NEED_BUILD=true
fi
if [ "$NEED_BUILD" = true ]; then
echo "[start] 编译新二进制..."
$GO_CMD build -o "$BIN" . 2>&1
echo "[start] 编译完成"
fi
# 确认端口空闲
if ss -tlnp 2>/dev/null | grep -q ":$PORT "; then
echo "[start] ERROR: 端口 $PORT 仍被占用,放弃启动"
exit 1
fi
# 启动
echo "[start] 启动 exchange-monitor (端口 $PORT)..."
nohup "$BIN" >> "$LOG" 2>&1 &
PID=$!
echo "[start] PID=$PID"
# 等待就绪
for i in $(seq 1 10); do
if ss -tlnp 2>/dev/null | grep -q ":$PORT "; then
echo "[start] 就绪 (${i}s)"
echo "[start] http://localhost:$PORT"
exit 0
fi
sleep 1
done
echo "[start] 启动超时(10s),请检查日志: tail -f $LOG"
exit 1