#!/usr/bin/env bash # vol_live 모니터 HTTP 서버 (포트 기본 8766 — Binance 8765와 분리) set -euo pipefail # shellcheck source=scripts/_cron_env.sh source "$(dirname "$0")/_cron_env.sh" PIDFILE="${CRON_PROJECT_ROOT}/data/spot/operations/vol_monitor.pid" PORT="${VOL_MONITOR_PORT:-8766}" export VOL_MONITOR_PORT="$PORT" if [ "${1:-}" = "--stop" ]; then if [ -f "$PIDFILE" ]; then pid="$(cat "$PIDFILE")" if kill -0 "$pid" 2>/dev/null; then kill "$pid" echo "stopped pid $pid" fi rm -f "$PIDFILE" else echo "pid file 없음" fi exit 0 fi if [ -f "$PIDFILE" ]; then old_pid="$(cat "$PIDFILE")" if kill -0 "$old_pid" 2>/dev/null; then if lsof -iTCP:"$PORT" -sTCP:LISTEN -p "$old_pid" >/dev/null 2>&1; then echo "이미 실행 중: pid $old_pid → http://127.0.0.1:${PORT}/vol_live_monitor.html" exit 0 fi kill "$old_pid" 2>/dev/null || true fi rm -f "$PIDFILE" fi ensure_cron_log_dir "data/spot/operations" LOG="${CRON_PROJECT_ROOT}/data/spot/operations/vol_monitor_serve.log" PYTHON="$(resolve_bithumb_python)" || exit 1 nohup "$PYTHON" "${CRON_PROJECT_ROOT}/scripts/3_run_vol_monitor.py" --serve-only >> "$LOG" 2>&1 & pid=$! disown "$pid" 2>/dev/null || true echo "$pid" > "$PIDFILE" sleep 2 if curl -sf -o /dev/null "http://127.0.0.1:${PORT}/vol_live_monitor.html"; then echo "모니터 시작: http://127.0.0.1:${PORT}/vol_live_monitor.html" echo "로그: $LOG" echo "종료: bash scripts/3_run_vol_monitor_serve.sh --stop" else echo "서버 기동 실패 — 로그 확인: $LOG" >&2 tail -20 "$LOG" 2>/dev/null || true exit 1 fi