#!/bin/bash # 开始时间 时间戳 startTime=$(date +'%Y-%m-%d %H:%M:%S') # 接口项目站点路径(目录按照各自配置) APP_PATH="/application/mushroom-shop-prod/mini-server" # jar 包文件名称 APP_NAME="$APP_PATH/Crmeb-front.jar" # 日志文件名称 LOG_FILE="$APP_PATH/crmeb_out.log" # 启动环境 APP_YML="--spring.profiles.active=prod" # 清理旧日志文件 rm -f "$LOG_FILE" echo "开始停止 Crmeb 项目进程" # 查询进程,并杀掉当前 jar/java 程序 pid=$(ps -ef | grep "$APP_NAME" | grep -v "grep" | awk '{print $2}') if [ -n "$pid" ]; then echo "发现进程 PID: $pid" for p in $pid; do kill "$p" echo "已终止 PID: $p" done echo "Crmeb 项目进程已终止" else echo "未发现 Crmeb 相关进程" fi sleep 2 # 判断 jar 包文件是否存在 if [ -e "$APP_NAME" ]; then echo "文件存在, 开始启动此程序..." # 启动 jar 包,指向日志文件 nohup java -jar "$APP_NAME" $APP_YML > "$LOG_FILE" 2>&1 & echo "正在发布中,请稍后......" sleep 10s # 检测日志 while [ -f "$LOG_FILE" ]; do success=$(grep "Started CrmebFrontApplication in " "$LOG_FILE" || true) if [[ -n "$success" ]]; then echo "Crmeb 启动成功" break fi fail=$(grep "Fail" "$LOG_FILE" || true) if [[ -n "$fail" ]]; then echo "项目启动失败" tail -f "$LOG_FILE" exit 1 fi sleep 1s done endTime=$(date +'%Y-%m-%d %H:%M:%S') startSecond=$(date --date="$startTime" +%s) endSecond=$(date --date="$endTime" +%s) total=$((endSecond - startSecond)) echo "本次运行时间: $total 秒" echo "当前时间: $endTime" # 实时展示日志 echo "显示实时日志,请按 Ctrl+C 停止查看..." tail -f "$LOG_FILE" else echo "$APP_NAME 文件不存在,请检查。" fi