一:启动

#!/bin/bash

# 设置端口和JAR包路径
PORT=7000
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
JAR_PATH="$SCRIPT_DIR/react-minio-spring-0.0.1-SNAPSHOT.jar"

# 检查端口是否被占用的函数
check_port() {
    ss -tuln | grep -q ":$PORT"
}

# 启动服务的函数
start_service() {
    # 使用绝对路径调用 Java
    nohup /usr/lib/jvm/jdk-17.0.2/bin/java -Xms8g -Xmx16g -XX:+UseG1GC -XX:MetaspaceSize=1000M -jar "$JAR_PATH" --server.port=$PORT 
    local pid=$!
    echo "注册中心启动中(PID: $pid)..."

    # 检查进程是否存活
    sleep 2
    if ! ps -p $pid > /dev/null; then
        echo "错误:服务启动失败!请检查 output.log。"
        return 1
    fi

    # 等待最多 30 秒检测端口
    local timeout=30
    while ((timeout-- > 0)); do
        if ss -tuln | grep -q ":$PORT"; then
            echo "服务已成功启动,端口 $PORT 正在监听。"
            return 0
        fi
        sleep 1
    done

    echo "错误:服务启动超时,端口 $PORT 未监听!"
    return 1
}

# 主逻辑
if check_port; then
    echo "端口 $PORT 已经被占用,服务可能正在运行。"
else
    start_service || exit 1
fi

二:关闭

#!/bin/bash

# 设置JAR包名
JAR_NAME="react-minio-spring-0.0.1-SNAPSHOT.jar"

# 查找并杀掉进程
kill_process() {
    # 使用 ps 查找进程并杀掉相关进程
    PID=$(ps -ef | grep "$JAR_NAME" | grep -v "grep" | awk '{print $2}')
    
    if [ -n "$PID" ]; then
        kill -9 $PID
        echo "注册中心已终止。"
    else
        echo "没有找到运行 $JAR_NAME 的进程。"
    fi
}

kill_process