#!/usr/bin/env bash # 中控 PM2 快捷脚本(在 manual_trading_hub 目录或任意路径执行均可) set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" HUB_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" ECO="${HUB_DIR}/ecosystem.config.cjs" usage() { cat <<'EOF' 用法: bash scripts/pm2_hub.sh start 启动 manual-trading-hub(已存在则 pm2 restart) stop 停止 restart 重启 status pm2 status logs 跟踪日志(Ctrl+C 退出) delete 从 PM2 列表移除 前置: npm i -g pm2;manual_trading_hub 下已建 .venv 并 pip install 可选: cp .env.example .env EOF } cmd="${1:-}" if ! command -v pm2 >/dev/null 2>&1; then echo "未找到 pm2,请先: npm install -g pm2" >&2 exit 1 fi if [[ ! -f "${ECO}" ]]; then echo "未找到 ${ECO}" >&2 exit 1 fi cd "${HUB_DIR}" case "${cmd}" in start) if pm2 describe manual-trading-hub >/dev/null 2>&1; then pm2 restart manual-trading-hub echo "已重启 manual-trading-hub" else pm2 start "${ECO}" echo "已启动 manual-trading-hub" fi pm2 save 2>/dev/null || true ;; stop) pm2 stop manual-trading-hub 2>/dev/null || echo "进程未在运行" ;; restart) pm2 restart manual-trading-hub 2>/dev/null || pm2 start "${ECO}" ;; status) pm2 status ;; logs) pm2 logs manual-trading-hub --lines 200 ;; delete) pm2 delete manual-trading-hub 2>/dev/null || echo "进程不存在" ;; *) usage exit 1 ;; esac