0f12e0a8ea
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>
82 lines
2.0 KiB
Bash
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
|