# /data/sh/start_tk_regio.sh # crontab -e # 0 9 * * * /data/sh/start_tk_regio.sh #!/bin/bash # 定义变量 APP_DIR="/data/webapps/test_tk_region" LOG_FILE="$APP_DIR/sh.log" PYTHON_SCRIPT="tk_region.py" MAX_ATTEMPTS=10 WAIT_TIME=600 # 10分钟,单位为秒 # 记录日志函数 log() { echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE" } # 切换到应用目录 log "===========" log "切换到应用目录: $APP_DIR" cd "$APP_DIR" || { log "无法切换到应用目录 $APP_DIR,脚本退出" exit 1 } # 检查是否有旧进程在运行 attempt=1 while [ $attempt -le $MAX_ATTEMPTS ]; do # 查找正在运行的Python脚本进程 log "第 $attempt 次检查是否有旧进程在运行..." pid=$(ps aux | grep "$PYTHON_SCRIPT" | grep -v grep | awk '{print $2}') if [ -z "$pid" ]; then log "未发现运行中的 $PYTHON_SCRIPT 进程,准备启动新进程" break else log "发现运行中的进程,PID: $pid" if [ $attempt -eq $MAX_ATTEMPTS ]; then log "已达到最大等待次数 ($MAX_ATTEMPTS),仍有进程在运行,放弃启动" exit 1 fi log "等待 $((WAIT_TIME/60)) 分钟后再次检查..." sleep $WAIT_TIME attempt=$((attempt + 1)) fi done # 激活路径 log "激活conda路径" source ~/.bashrc || { log "激活conda激活路径失败" exit 1 } # 激活环境 log "激活conda环境 py310" conda activate py310 || { log "激活conda环境失败" exit 1 } log "激活虚拟环境" source venv/bin/activate || { log "激活虚拟环境失败" exit 1 } # 安装依赖 log "安装依赖包" pip install -r requirements.txt || { log "安装依赖包失败" exit 1 } # 启动Python脚本 log "启动 $PYTHON_SCRIPT 脚本" nohup python "$PYTHON_SCRIPT" > output.log 2>&1 & pid=$! log "$PYTHON_SCRIPT 已启动,PID: $pid" log "脚本执行完成"