diff --git a/deploy/springboot/deploy.sh b/deploy/springboot/deploy.sh index 8d66d8e..0760d67 100644 --- a/deploy/springboot/deploy.sh +++ b/deploy/springboot/deploy.sh @@ -300,6 +300,7 @@ build_debug_opts() { # 启动应用并校验进程是否存在 start_app() { local jar_path="${APP_HOME}/${JAR_NAME}" + local original_dir if [[ ! -f "${jar_path}" ]]; then log_error "目标 Jar 不存在:${jar_path}" @@ -317,20 +318,33 @@ start_app() { log_info "Spring Profile:${SPRING_PROFILE}" log_info "Debug 开关:${DEBUG_ENABLED}" + # 为避免应用使用相对路径时在错误目录生成文件,启动前切换到运行目录。 + original_dir="$(pwd)" + if ! cd "${APP_HOME}"; then + log_error "切换运行目录失败:${APP_HOME}" + exit 1 + fi + log_info "当前工作目录:$(pwd)" + # 启动命令说明: # 1. 使用 nohup 后台启动,避免会话退出导致进程结束 # 2. --spring.config.additional-location 追加外置配置目录 - # 3. 标准输出与错误输出统一重定向到 console.out + # 3. --logging.file.path 覆盖应用日志目录,统一输出到 LOG_DIR + # 4. 标准输出与错误输出统一重定向到 console.out nohup "${JDK_HOME}/bin/java" \ ${JVM_OPTS} \ ${JAVA_SYS_PROPS} \ ${debug_opts} \ - -jar "${jar_path}" \ + -jar "./${JAR_NAME}" \ --spring.profiles.active="${SPRING_PROFILE}" \ --spring.config.additional-location="${CONFIG_DIR}/" \ + --logging.file.path="${LOG_DIR}" \ ${SPRING_EXTRA_ARGS} \ >> "${CONSOLE_LOG_FILE}" 2>&1 & + # 恢复脚本工作目录,避免影响后续逻辑或调用方上下文。 + cd "${original_dir}" || true + local new_pid=$! log_info "启动命令已提交,后台进程 PID(提交时): ${new_pid}"