#!/bin/bash set -e PLATFORM="${PLATFORM:-boss}" INSTANCES="${INSTANCES:-1}" echo "==========================================" echo " Spider Container" echo " Platform: ${PLATFORM}" echo " Instances: ${INSTANCES}" echo " API: ${API_BASE_URL}" echo " Delay: ${SLEEP_MIN_SECONDS}-${SLEEP_MAX_SECONDS}s" echo " Inline Co: ${INLINE_COMPANY}" echo "==========================================" # 平台 -> Python 模块映射 case "${PLATFORM}" in boss) MODULE="spiderJobs.platforms.boss.main" ;; qcwy) MODULE="spiderJobs.platforms.job51.main" ;; zhilian) MODULE="spiderJobs.platforms.zhilian.main" ;; *) echo "[ERROR] Unknown PLATFORM: ${PLATFORM}" echo " Supported: boss, qcwy, zhilian" exit 1 ;; esac # 启动多个实例(最后一个前台运行) PIDS=() for i in $(seq 1 $((INSTANCES - 1))); do echo "[spider] Starting ${PLATFORM} instance ${i}/${INSTANCES} (background)..." python -m "${MODULE}" & PIDS+=($!) sleep 2 # 错开启动,避免同时抢同一个关键词 done echo "[spider] Starting ${PLATFORM} instance ${INSTANCES}/${INSTANCES} (foreground)..." python -m "${MODULE}" & PIDS+=($!) # 等待所有子进程,任一退出则全部退出 wait_and_cleanup() { echo "[spider] Shutting down all instances..." for pid in "${PIDS[@]}"; do kill "$pid" 2>/dev/null || true done wait echo "[spider] All instances stopped." } trap wait_and_cleanup SIGTERM SIGINT # 等任意子进程退出 wait -n wait_and_cleanup