zhangjf 3e73b6c086 feat: 脚本支持多租户实例部署
- env.properties新增APP_NAME、INSTANCE_NAME、TENANT_ID配置
- APP_NAME: 服务名称(对应JAR文件名)
- INSTANCE_NAME: 实例名称(区分多租户实例,用于日志目录和PID文件)
- TENANT_ID: 租户标识(用于Nacos元数据路由)
- start.sh传递spring.application.name和TENANT_ID参数
- stop.sh和status.sh同步支持INSTANCE_NAME
2026-02-22 15:46:09 +08:00

60 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
# 服务停止脚本
# 支持多租户模式
# 获取脚本所在目录
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
APP_HOME=$(dirname "$SCRIPT_DIR")
# 加载环境变量配置
if [ -f "${APP_HOME}/conf/env.properties" ]; then
while IFS='=' read -r key value; do
[[ "$key" =~ ^#.*$ ]] && continue
[[ -z "$key" ]] && continue
key=$(echo "$key" | xargs)
value=$(echo "$value" | xargs)
export "$key=$value"
done < "${APP_HOME}/conf/env.properties"
fi
# 服务名称和实例名称
APP_NAME=${APP_NAME:-$(basename "$APP_HOME")}
INSTANCE_NAME=${INSTANCE_NAME:-${APP_NAME}}
# PID文件路径
PID_FILE="${APP_HOME}/${INSTANCE_NAME}.pid"
# 检查是否运行
if [ ! -f "$PID_FILE" ]; then
echo "${INSTANCE_NAME} is not running"
exit 0
fi
PID=$(cat $PID_FILE)
if ! ps -p $PID > /dev/null 2>&1; then
echo "${INSTANCE_NAME} is not running"
rm -f $PID_FILE
exit 0
fi
# 停止服务
echo "Stopping ${INSTANCE_NAME} (PID: $PID)..."
kill $PID
# 等待停止
for i in {1..30}; do
if ! ps -p $PID > /dev/null 2>&1; then
break
fi
sleep 1
done
# 强制停止
if ps -p $PID > /dev/null 2>&1; then
echo "Force killing ${INSTANCE_NAME}..."
kill -9 $PID
fi
rm -f $PID_FILE
echo "${INSTANCE_NAME} stopped"