update
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user