update bash start
parent
c0b39e2396
commit
ebf1a853ab
|
|
@ -31,24 +31,76 @@ echo "日志文件: $LOG_FILE"
|
||||||
nohup python -u train_web_ui.py > "$LOG_FILE" 2>&1 &
|
nohup python -u train_web_ui.py > "$LOG_FILE" 2>&1 &
|
||||||
|
|
||||||
# 保存PID
|
# 保存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=""
|
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 的地址,再截取端口
|
# 提取形如 http://0.0.0.0:12345 的地址,再截取端口
|
||||||
PORT=$(grep -Eo 'http://0\.0\.0\.0:[0-9]+' "$LOG_FILE" | tail -n1 | awk -F: '{print $NF}')
|
PORT=$(grep -Eo 'http://0\.0\.0\.0:[0-9]+' "$LOG_FILE" | tail -n1 | awk -F: '{print $NF}')
|
||||||
if [ -n "$PORT" ]; then
|
if [ -n "$PORT" ]; then
|
||||||
|
SUCCESS=true
|
||||||
break
|
break
|
||||||
fi
|
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
|
sleep 0.5
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# 如果超时且没有找到端口
|
||||||
|
if [ "$SUCCESS" = false ]; then
|
||||||
|
# 再次检查进程是否还在运行
|
||||||
|
if ps -p "$pid" > /dev/null 2>&1; then
|
||||||
|
echo "警告: 无法在指定时间内确认服务是否完全启动"
|
||||||
# 如果仍未获取到端口,回退为默认提示端口(与后端起始端口一致)
|
# 如果仍未获取到端口,回退为默认提示端口(与后端起始端口一致)
|
||||||
if [ -z "$PORT" ]; then
|
|
||||||
PORT=12581
|
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
|
fi
|
||||||
|
|
||||||
echo "服务已启动! PID: $(cat "train_web_ui.pid")"
|
echo "服务已成功启动! PID: $pid"
|
||||||
echo "访问地址: http://localhost:$PORT"
|
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"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue