#!/bin/sh # 生产环境(Ubuntu):先激活 venv,再按顺序执行 BUFF 同步脚本,全部成功后休眠再重复。 # 兼容 /bin/sh(dash);勿使用「sh -c」里嵌套复杂引号时混淆 $0。 # 推荐:chmod +x 后 ./run_buff_sync_loop_prod.sh # # 虚拟环境查找顺序(可 export VENV_DIR 强制指定): # 1) 环境变量 VENV_DIR # 2) 脚本目录下的 venv(如 /root/sync_goods/venv) # 3) 脚本目录上一级的 venv(如 buff-api/venv) set -eu DIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd) if [ -n "${VENV_DIR:-}" ]; then ACTIVATE="$VENV_DIR/bin/activate" if [ ! -f "$ACTIVATE" ]; then echo "VENV_DIR=$VENV_DIR 下未找到 bin/activate" >&2 exit 1 fi elif [ -f "$DIR/venv/bin/activate" ]; then ACTIVATE="$DIR/venv/bin/activate" elif [ -f "$DIR/../venv/bin/activate" ]; then ACTIVATE="$DIR/../venv/bin/activate" else echo "未找到虚拟环境。已尝试: VENV_DIR、$DIR/venv、$DIR/../venv" >&2 echo "请创建 venv 或执行: export VENV_DIR=/你的/venv路径" >&2 exit 1 fi # shellcheck source=/dev/null . "$ACTIVATE" cd "$DIR" SLEEP_SEC="${SLEEP_SEC:-600}" while true; do echo "$(date '+%Y-%m-%d %H:%M:%S') 开始一轮: sync_goods.py -> sync_float_price.py -> sync_liquidity.py" python sync_goods.py python sync_float_price.py python sync_liquidity.py echo "$(date '+%Y-%m-%d %H:%M:%S') 本轮完成,等待 ${SLEEP_SEC} 秒后开始下一轮" sleep "$SLEEP_SEC" done