From ebf1a853abdcd211c4ea6570fc6aa38ffe739438 Mon Sep 17 00:00:00 2001 From: yuyu5333 <1812107659@qq.com> Date: Fri, 14 Nov 2025 15:45:36 +0800 Subject: [PATCH] update bash start --- trainer_web/start_web_ui.sh | 68 ++++++++++++++++++++++++++++++++----- 1 file changed, 60 insertions(+), 8 deletions(-) diff --git a/trainer_web/start_web_ui.sh b/trainer_web/start_web_ui.sh index 1702227..e47ee81 100755 --- a/trainer_web/start_web_ui.sh +++ b/trainer_web/start_web_ui.sh @@ -31,24 +31,76 @@ echo "日志文件: $LOG_FILE" nohup python -u train_web_ui.py > "$LOG_FILE" 2>&1 & # 保存PID -echo $! > "train_web_ui.pid" +pid=$! +echo $pid > "train_web_ui.pid" -# 轮询日志以获取实际端口号(最多等待10秒) +# 检查进程是否成功启动 +if ! ps -p "$pid" > /dev/null 2>&1; then + echo "错误: Web UI 服务启动失败,进程已不存在" + # 显示日志文件的最后几行以提供错误信息 + if [ -f "$LOG_FILE" ]; then + echo "错误日志信息:" + tail -n 20 "$LOG_FILE" + fi + rm -f "train_web_ui.pid" + exit 1 +fi + +# 轮询日志以获取实际端口号并检查是否有错误(最多等待10秒) PORT="" -for i in {1..20}; do +START_TIME=$(date +%s) +MAX_WAIT_TIME=10 +SUCCESS=false + +while [ $(( $(date +%s) - $START_TIME )) -lt $MAX_WAIT_TIME ]; do + # 检查是否有错误信息 + if grep -i "error\|exception\|failed\|traceback" "$LOG_FILE" > /dev/null 2>&1; then + echo "错误: Web UI 服务启动过程中出现错误" + echo "错误日志信息:" + grep -i "error\|exception\|failed\|traceback" "$LOG_FILE" + tail -n 20 "$LOG_FILE" + echo "请查看完整日志文件了解详细错误信息: $LOG_FILE" + rm -f "train_web_ui.pid" + kill $pid > /dev/null 2>&1 + exit 1 + fi + # 提取形如 http://0.0.0.0:12345 的地址,再截取端口 PORT=$(grep -Eo 'http://0\.0\.0\.0:[0-9]+' "$LOG_FILE" | tail -n1 | awk -F: '{print $NF}') if [ -n "$PORT" ]; then + SUCCESS=true break fi + + # 再次检查进程是否还在运行 + if ! ps -p "$pid" > /dev/null 2>&1; then + echo "错误: Web UI 服务启动失败,进程已退出" + echo "错误日志信息:" + tail -n 20 "$LOG_FILE" + rm -f "train_web_ui.pid" + exit 1 + fi + sleep 0.5 done -# 如果仍未获取到端口,回退为默认提示端口(与后端起始端口一致) -if [ -z "$PORT" ]; then - PORT=12581 +# 如果超时且没有找到端口 +if [ "$SUCCESS" = false ]; then + # 再次检查进程是否还在运行 + if ps -p "$pid" > /dev/null 2>&1; then + echo "警告: 无法在指定时间内确认服务是否完全启动" + # 如果仍未获取到端口,回退为默认提示端口(与后端起始端口一致) + PORT=12581 + echo "服务可能已启动,但未能确认。请检查日志文件: $LOG_FILE" + else + echo "错误: Web UI 服务启动超时且进程已退出" + echo "错误日志信息:" + tail -n 20 "$LOG_FILE" + rm -f "train_web_ui.pid" + exit 1 + fi fi -echo "服务已启动! PID: $(cat "train_web_ui.pid")" +echo "服务已成功启动! PID: $pid" echo "访问地址: http://localhost:$PORT" -echo "停止命令: kill $(cat "train_web_ui.pid") or bash trainer_web/stop_web_ui.sh" +echo "停止命令: kill $pid or bash trainer_web/stop_web_ui.sh"