| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #!/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
|