修正后端重启脚本进程识别与端口配置
This commit is contained in:
@@ -9,10 +9,10 @@ CONSOLE_LOG="$LOG_DIR/backend-console.log"
|
|||||||
PID_FILE="$LOG_DIR/backend-java.pid"
|
PID_FILE="$LOG_DIR/backend-java.pid"
|
||||||
TARGET_DIR="$ROOT_DIR/ruoyi-admin/target"
|
TARGET_DIR="$ROOT_DIR/ruoyi-admin/target"
|
||||||
JAR_NAME="ruoyi-admin.jar"
|
JAR_NAME="ruoyi-admin.jar"
|
||||||
SERVER_PORT=8080
|
SERVER_PORT=63310
|
||||||
STOP_WAIT_SECONDS=30
|
STOP_WAIT_SECONDS=30
|
||||||
APP_KEYWORD="$JAR_NAME"
|
APP_MARKER="-Dccdi.backend.root=$ROOT_DIR"
|
||||||
JAVA_OPTS="-Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError"
|
JAVA_OPTS="$APP_MARKER -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError"
|
||||||
|
|
||||||
timestamp() {
|
timestamp() {
|
||||||
date "+%Y-%m-%d %H:%M:%S"
|
date "+%Y-%m-%d %H:%M:%S"
|
||||||
@@ -42,24 +42,54 @@ ensure_command() {
|
|||||||
fi
|
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() {
|
collect_pids() {
|
||||||
all_pids=""
|
all_pids=""
|
||||||
|
|
||||||
if [ -f "$PID_FILE" ]; then
|
if [ -f "$PID_FILE" ]; then
|
||||||
file_pid=$(cat "$PID_FILE" 2>/dev/null || true)
|
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"
|
all_pids="$all_pids $file_pid"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
port_pids=$(lsof -tiTCP:"$SERVER_PORT" -sTCP:LISTEN 2>/dev/null || true)
|
marker_pids=$(pgrep -f "$APP_MARKER" 2>/dev/null || true)
|
||||||
if [ -n "${port_pids:-}" ]; then
|
if [ -n "${marker_pids:-}" ]; then
|
||||||
all_pids="$all_pids $port_pids"
|
for pid in $marker_pids; do
|
||||||
|
if is_managed_backend_pid "$pid"; then
|
||||||
|
all_pids="$all_pids $pid"
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
app_pids=$(pgrep -f "$APP_KEYWORD" 2>/dev/null || true)
|
|
||||||
if [ -n "${app_pids:-}" ]; then
|
|
||||||
all_pids="$all_pids $app_pids"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
unique_pids=""
|
unique_pids=""
|
||||||
@@ -155,6 +185,12 @@ status_backend() {
|
|||||||
pids=$(collect_pids)
|
pids=$(collect_pids)
|
||||||
if [ -n "${pids:-}" ]; then
|
if [ -n "${pids:-}" ]; then
|
||||||
log_info "后端正在运行,进程: $pids"
|
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
|
else
|
||||||
log_info "后端未运行"
|
log_info "后端未运行"
|
||||||
fi
|
fi
|
||||||
@@ -190,6 +226,7 @@ main() {
|
|||||||
ensure_command mvn
|
ensure_command mvn
|
||||||
ensure_command lsof
|
ensure_command lsof
|
||||||
ensure_command pgrep
|
ensure_command pgrep
|
||||||
|
ensure_command ps
|
||||||
ensure_command tail
|
ensure_command tail
|
||||||
|
|
||||||
action="${1:-restart}"
|
action="${1:-restart}"
|
||||||
|
|||||||
Reference in New Issue
Block a user