#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" RUN_DIR="${RUN_DIR:-$ROOT_DIR/checkpoints/predictor_v4_1000_seed0}" POLL_SECONDS="${POLL_SECONDS:-60}" UPSTREAM_PID="${UPSTREAM_PID:-}" if [[ -z "$UPSTREAM_PID" ]]; then if [[ ! -f "$RUN_DIR/end_to_end.pid" ]]; then echo "错误:缺少 $RUN_DIR/end_to_end.pid。" >&2 exit 1 fi UPSTREAM_PID="$(cat "$RUN_DIR/end_to_end.pid")" fi if [[ ! "$UPSTREAM_PID" =~ ^[1-9][0-9]*$ ]]; then echo "错误:UPSTREAM_PID 不是有效 PID:$UPSTREAM_PID" >&2 exit 1 fi echo "等待 end-to-end supervisor PID=$UPSTREAM_PID 完成。" while kill -0 "$UPSTREAM_PID" 2>/dev/null; do sleep "$POLL_SECONDS" done echo "Supervisor 已退出,检查完整产物后开始同步。" bash "$ROOT_DIR/scripts/sync_predictor_v4_artifacts.sh"