From 7c563b3315b152fa9bda1945148b8a410031cc9c Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Tue, 31 Mar 2026 09:55:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=90=8E=E7=AB=AF=E9=87=8D?= =?UTF-8?q?=E5=90=AF=E8=84=9A=E6=9C=AC=E8=BF=9B=E7=A8=8B=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E4=B8=8E=E7=AB=AF=E5=8F=A3=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/restart_java_backend.sh | 61 +++++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 12 deletions(-) diff --git a/bin/restart_java_backend.sh b/bin/restart_java_backend.sh index bf861cf..f45ef14 100755 --- a/bin/restart_java_backend.sh +++ b/bin/restart_java_backend.sh @@ -9,10 +9,10 @@ CONSOLE_LOG="$LOG_DIR/backend-console.log" PID_FILE="$LOG_DIR/backend-java.pid" TARGET_DIR="$ROOT_DIR/ruoyi-admin/target" JAR_NAME="ruoyi-admin.jar" -SERVER_PORT=8080 +SERVER_PORT=63310 STOP_WAIT_SECONDS=30 -APP_KEYWORD="$JAR_NAME" -JAVA_OPTS="-Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError" +APP_MARKER="-Dccdi.backend.root=$ROOT_DIR" +JAVA_OPTS="$APP_MARKER -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError" timestamp() { date "+%Y-%m-%d %H:%M:%S" @@ -42,24 +42,54 @@ ensure_command() { fi } +is_managed_backend_pid() { + pid="$1" + if [ -z "${pid:-}" ] || ! kill -0 "$pid" 2>/dev/null; then + return 1 + fi + + args=$(ps -o args= -p "$pid" 2>/dev/null || true) + if [ -z "${args:-}" ]; then + return 1 + fi + + case "$args" in + *"$APP_MARKER"*"$JAR_NAME"*|*"$JAR_NAME"*"$APP_MARKER"*) + return 0 + ;; + esac + + if [ -f "$PID_FILE" ]; then + file_pid=$(cat "$PID_FILE" 2>/dev/null || true) + if [ "${file_pid:-}" = "$pid" ]; then + case "$args" in + *"java"*"-jar"*"$JAR_NAME"*) + return 0 + ;; + esac + fi + fi + + return 1 +} + collect_pids() { all_pids="" if [ -f "$PID_FILE" ]; then file_pid=$(cat "$PID_FILE" 2>/dev/null || true) - if [ -n "${file_pid:-}" ] && kill -0 "$file_pid" 2>/dev/null; then + if [ -n "${file_pid:-}" ] && is_managed_backend_pid "$file_pid"; then all_pids="$all_pids $file_pid" fi fi - port_pids=$(lsof -tiTCP:"$SERVER_PORT" -sTCP:LISTEN 2>/dev/null || true) - if [ -n "${port_pids:-}" ]; then - all_pids="$all_pids $port_pids" - fi - - app_pids=$(pgrep -f "$APP_KEYWORD" 2>/dev/null || true) - if [ -n "${app_pids:-}" ]; then - all_pids="$all_pids $app_pids" + marker_pids=$(pgrep -f "$APP_MARKER" 2>/dev/null || true) + if [ -n "${marker_pids:-}" ]; then + for pid in $marker_pids; do + if is_managed_backend_pid "$pid"; then + all_pids="$all_pids $pid" + fi + done fi unique_pids="" @@ -155,6 +185,12 @@ status_backend() { pids=$(collect_pids) if [ -n "${pids:-}" ]; then log_info "后端正在运行,进程: $pids" + return 0 + fi + + port_pids=$(lsof -tiTCP:"$SERVER_PORT" -sTCP:LISTEN 2>/dev/null || true) + if [ -n "${port_pids:-}" ]; then + log_info "未发现脚本托管的后端进程,但端口 $SERVER_PORT 被其他进程占用: $port_pids" else log_info "后端未运行" fi @@ -190,6 +226,7 @@ main() { ensure_command mvn ensure_command lsof ensure_command pgrep + ensure_command ps ensure_command tail action="${1:-restart}"