restart.sh 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #!/bin/bash
  2. # 通风Agent 重启脚本:有进程则停止再启动,无进程直接启动
  3. # ==================== 请根据实际环境修改下面配置 ====================
  4. # Conda 根目录
  5. CONDA_PATH="/data/conda/conda3"
  6. # 程序文件
  7. PY_FILE="main.py"
  8. # Conda 环境名
  9. CONDA_ENV="vent_agent"
  10. # 日志文件
  11. LOG_FILE="./vent_agent.log"
  12. # PID 记录文件
  13. PID_FILE="./vent_agent.pid"
  14. # =====================================================================
  15. # 加载 conda
  16. source ${CONDA_PATH}/etc/profile.d/conda.sh
  17. # 激活环境
  18. conda activate ${CONDA_ENV}
  19. echo "==================== 开始执行重启操作 ===================="
  20. # 1. 检查旧进程并停止
  21. if [ -f "${PID_FILE}" ]; then
  22. OLD_PID=$(cat "${PID_FILE}")
  23. # 判断进程是否在运行
  24. if ps -p "${OLD_PID}" > /dev/null 2>&1; then
  25. echo "发现运行中的进程 PID: ${OLD_PID},正在停止..."
  26. kill -15 "${OLD_PID}"
  27. sleep 1
  28. # 二次确认,强制杀死残留
  29. if ps -p "${OLD_PID}" > /dev/null 2>&1; then
  30. echo "进程未正常退出,强制终止 PID: ${OLD_PID}"
  31. kill -9 "${OLD_PID}"
  32. fi
  33. fi
  34. # 删除旧 PID 文件
  35. rm -f "${PID_FILE}"
  36. echo "旧进程已清理完成"
  37. else
  38. echo "未检测到旧进程,直接启动新进程"
  39. fi
  40. # 2. 后台启动新程序
  41. echo "正在后台启动 ${PY_FILE},日志输出至 ${LOG_FILE}"
  42. nohup python3 ${PY_FILE} >> ${LOG_FILE} 2>&1 &
  43. # 获取新 PID 并写入文件
  44. NEW_PID=$!
  45. echo "${NEW_PID}" > "${PID_FILE}"
  46. echo "启动成功!新进程 PID: ${NEW_PID}"
  47. echo "=========================================================="