Files
dekun 0f12e0a8ea Add single-exchange instance-only deploy menu options.
Manage menu 4/5/6 install OKX/Binance/Gate Flask only without hub or agents; reuse setup_env --only and narrowed PM2 verify.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-17 15:40:25 +08:00

82 lines
2.0 KiB
Bash

#!/usr/bin/env bash
# 按推荐顺序启动三所 Flask + 中控 hub/三 agent(PM2).
# 用法(仓库根或任意目录):
# bash deploy/pm2_start_all.sh
# bash deploy/pm2_start_all.sh --only okx
# bash deploy/pm2_start_all.sh --only binance
# bash deploy/pm2_start_all.sh --only gate
#
# 与 deploy/setup_env.sh 独立:setup_env 只建 venv;本脚本负责 PM2 启动.
set -e
set -u
if [ -n "${BASH_VERSION:-}" ]; then
set -o pipefail
fi
DEPLOY_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "${DEPLOY_DIR}/.." && pwd)"
# shellcheck source=lib/common.sh
source "${DEPLOY_DIR}/lib/common.sh"
ONLY="all"
while [[ $# -gt 0 ]]; do
case "$1" in
--only)
ONLY="${2:-all}"
shift 2
;;
-h|--help)
sed -n '2,10p' "$0" | sed 's/^# \?//'
exit 0
;;
*)
echo "未知参数: $1" >&2
exit 1
;;
esac
done
start_one() {
local dir_name="$1"
local proj="${REPO_ROOT}/${dir_name}"
local eco="${proj}/ecosystem.config.cjs"
if [[ ! -f "${eco}" ]]; then
echo "skip (no ecosystem): ${dir_name}" >&2
return 0
fi
echo "==> pm2 start ${dir_name}"
# 已存在则 restart,避免重复 start 导致 set -e 退出
if (cd "${proj}" && pm2 start ecosystem.config.cjs); then
return 0
fi
echo " (已存在,改为 restart)"
(cd "${proj}" && pm2 startOrReload ecosystem.config.cjs --update-env) \
|| (cd "${proj}" && pm2 reload ecosystem.config.cjs --update-env) \
|| true
}
if ! command -v pm2 >/dev/null 2>&1; then
echo "未找到 pm2,请先安装 Node.js 与 pm2(见 docs/ubuntu-server.md)" >&2
exit 1
fi
if [[ "${ONLY}" == "all" ]]; then
start_one crypto_monitor_binance
start_one crypto_monitor_gate
start_one crypto_monitor_okx
start_one manual_trading_hub
else
ex_key="$(normalize_exchange_key "${ONLY}" || true)"
if [[ -z "${ex_key}" ]]; then
echo "未知 --only 值: ${ONLY} (期望 okx|binance|gate|all)" >&2
exit 1
fi
dir_name="$(exchange_dir "${ex_key}")"
start_one "${dir_name}"
fi
pm2 save 2>/dev/null || true
echo ""
echo "PM2 进程:"
pm2 list