一:启动
#!/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