From 73e961facf74feb59e84b4c647a9d74bccbe5c1e Mon Sep 17 00:00:00 2001 From: lapuda <577732344@qq.com> Date: Wed, 15 Jul 2026 15:17:50 +0800 Subject: [PATCH] update --- buildAndStart-test.sh | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/buildAndStart-test.sh b/buildAndStart-test.sh index ad28aa6..3632a7b 100755 --- a/buildAndStart-test.sh +++ b/buildAndStart-test.sh @@ -158,6 +158,13 @@ pid_is_running() { [[ "$pid" =~ ^[0-9]+$ ]] && kill -0 "$pid" 2>/dev/null } +stop_log_tail() { + local tail_pid="${1:-}" + [[ "$tail_pid" =~ ^[0-9]+$ ]] || return 0 + kill "$tail_pid" 2>/dev/null || true + wait "$tail_pid" 2>/dev/null || true +} + stop_app() { local pid second local -a pids=() @@ -219,7 +226,7 @@ build_app() { } start_app() { - local pid second + local pid second log_tail_pid local -a jvm_options=() read -r -a jvm_options <<< "$JVM_MEMORY $JVM_DEBUG" @@ -235,8 +242,16 @@ start_app() { ) pid="$(<"$PID_FILE")" + # 启动阶段也实时输出新增日志,避免健康检查等待期间看起来像脚本卡住。 + tail -n 0 -F "$LOG_FILE" & + log_tail_pid="$!" + trap 'stop_log_tail "$log_tail_pid"; exit 130' INT TERM + __green "实时启动日志(健康检查通过后继续跟踪)" + for second in $(seq 1 "$STARTUP_TIMEOUT"); do if ! pid_is_running "$pid"; then + stop_log_tail "$log_tail_pid" + trap - INT TERM __red "应用启动失败,进程已退出。最近日志:" tail -n 80 "$LOG_FILE" >&2 || true rm -f "$PID_FILE" @@ -244,12 +259,16 @@ start_app() { fi if command -v curl >/dev/null 2>&1 && curl -fsS --max-time 2 "$HEALTH_URL" >/dev/null 2>&1; then + stop_log_tail "$log_tail_pid" + trap - INT TERM __green "应用启动成功: PID=$pid,健康检查通过($HEALTH_URL)" return 0 fi sleep 1 done + stop_log_tail "$log_tail_pid" + trap - INT TERM __red "应用进程仍在运行,但健康检查超时(${STARTUP_TIMEOUT}s): $HEALTH_URL" __red "最近日志:" tail -n 80 "$LOG_FILE" >&2 || true