update
This commit is contained in:
@@ -158,6 +158,13 @@ pid_is_running() {
|
|||||||
[[ "$pid" =~ ^[0-9]+$ ]] && kill -0 "$pid" 2>/dev/null
|
[[ "$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() {
|
stop_app() {
|
||||||
local pid second
|
local pid second
|
||||||
local -a pids=()
|
local -a pids=()
|
||||||
@@ -219,7 +226,7 @@ build_app() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
start_app() {
|
start_app() {
|
||||||
local pid second
|
local pid second log_tail_pid
|
||||||
local -a jvm_options=()
|
local -a jvm_options=()
|
||||||
read -r -a jvm_options <<< "$JVM_MEMORY $JVM_DEBUG"
|
read -r -a jvm_options <<< "$JVM_MEMORY $JVM_DEBUG"
|
||||||
|
|
||||||
@@ -235,8 +242,16 @@ start_app() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
pid="$(<"$PID_FILE")"
|
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
|
for second in $(seq 1 "$STARTUP_TIMEOUT"); do
|
||||||
if ! pid_is_running "$pid"; then
|
if ! pid_is_running "$pid"; then
|
||||||
|
stop_log_tail "$log_tail_pid"
|
||||||
|
trap - INT TERM
|
||||||
__red "应用启动失败,进程已退出。最近日志:"
|
__red "应用启动失败,进程已退出。最近日志:"
|
||||||
tail -n 80 "$LOG_FILE" >&2 || true
|
tail -n 80 "$LOG_FILE" >&2 || true
|
||||||
rm -f "$PID_FILE"
|
rm -f "$PID_FILE"
|
||||||
@@ -244,12 +259,16 @@ start_app() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v curl >/dev/null 2>&1 && curl -fsS --max-time 2 "$HEALTH_URL" >/dev/null 2>&1; then
|
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)"
|
__green "应用启动成功: PID=$pid,健康检查通过($HEALTH_URL)"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
|
|
||||||
|
stop_log_tail "$log_tail_pid"
|
||||||
|
trap - INT TERM
|
||||||
__red "应用进程仍在运行,但健康检查超时(${STARTUP_TIMEOUT}s): $HEALTH_URL"
|
__red "应用进程仍在运行,但健康检查超时(${STARTUP_TIMEOUT}s): $HEALTH_URL"
|
||||||
__red "最近日志:"
|
__red "最近日志:"
|
||||||
tail -n 80 "$LOG_FILE" >&2 || true
|
tail -n 80 "$LOG_FILE" >&2 || true
|
||||||
|
|||||||
Reference in New Issue
Block a user