Files
crypto_monitor/manual_trading_hub/scripts/pm2_hub.sh
T
dekun b733e551a0 Normalize fullwidth punctuation to ASCII across codebase.
Add scripts/normalize_ambiguous_unicode.py; fix corrupted patch_instance_theme_templates.py. Preserves curly quotes in string literals; removes Git homoglyph warnings on .env.example.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-08 23:42:26 +08:00

91 lines
1.8 KiB
Bash

#!/usr/bin/env bash
# 中控 + 子代理 统一 PM2 快捷脚本
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
HUB_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
ECO="${HUB_DIR}/ecosystem.config.cjs"
# 与 ecosystem.config.cjs 中 name 一致
PM2_NAMES=(
manual-agent-binance
manual-agent-okx
manual-agent-gate
manual-trading-hub
)
usage() {
cat <<'EOF'
用法: bash scripts/pm2_hub.sh <start|stop|restart|status|logs|delete>
start 启动 ecosystem.config.cjs(3 路子代理 + 中控,已存在则 restart 全部)
stop 停止全部
restart 重启全部
status pm2 status
logs 全部相关进程日志
delete 从 PM2 列表移除全部
仅中控: pm2 start ecosystem.config.cjs --only manual-trading-hub
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}"
_any_running() {
local n
for n in "${PM2_NAMES[@]}"; do
if pm2 describe "${n}" >/dev/null 2>&1; then
return 0
fi
done
return 1
}
case "${cmd}" in
start)
if _any_running; then
pm2 restart "${ECO}"
echo "已重启:hub + 全部 agent"
else
pm2 start "${ECO}"
echo "已启动:hub + 全部 agent(共 ${#PM2_NAMES[@]} 个进程)"
fi
pm2 save 2>/dev/null || true
;;
stop)
pm2 stop "${PM2_NAMES[@]}" 2>/dev/null || echo "部分或全部进程未在运行"
;;
restart)
if _any_running; then
pm2 restart "${ECO}"
else
pm2 start "${ECO}"
fi
;;
status)
pm2 status
;;
logs)
pm2 logs "${PM2_NAMES[@]}" --lines 100
;;
delete)
pm2 delete "${PM2_NAMES[@]}" 2>/dev/null || echo "部分或全部进程不存在"
;;
*)
usage
exit 1
;;
esac