提交
This commit is contained in:
1 parent
600f0c621c
commit
fa1a7bcf79
5 files changed
+1
-1074
No files matched your search
@@ -38,7 +38,7 @@ spring.boot.admin.client:
|
||||
# 增加客户端开关
|
||||
enabled: true
|
||||
# 设置 Spring Boot Admin Server 地址
|
||||
url: http://47.121.125.41:9090/admin
|
||||
url: http://127.0.0.1:9090/admin
|
||||
instance:
|
||||
service-host-type: IP
|
||||
metadata:
|
||||
|
||||
@@ -1,346 +0,0 @@
|
||||
#!/bin/bash
|
||||
# =============================================================================
|
||||
# RuoYi 所有服务统一管理脚本 (CentOS)
|
||||
# 用途: 统一启动、停止、重启、查看所有RuoYi服务的状态
|
||||
# 包含: ruoyi-admin(8080) + ruoyi-monitor-admin(9090) + ruoyi-snailjob-server(8800)
|
||||
# =============================================================================
|
||||
|
||||
# 颜色配置
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
CYAN='\033[0;36m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 脚本路径配置
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ADMIN_SCRIPT="$SCRIPT_DIR/start-ruoyi-admin.sh"
|
||||
MONITOR_SCRIPT="$SCRIPT_DIR/start-ruoyi-monitor.sh"
|
||||
SNAILJOB_SCRIPT="$SCRIPT_DIR/start-ruoyi-snailjob.sh"
|
||||
|
||||
# 服务信息配置
|
||||
declare -A SERVICES=(
|
||||
["admin"]="ruoyi-admin:8080:主应用服务"
|
||||
["monitor"]="ruoyi-monitor-admin:9090:监控中心"
|
||||
["snailjob"]="ruoyi-snailjob-server:8800:任务调度中心"
|
||||
)
|
||||
|
||||
# 服务启动顺序(考虑依赖关系)
|
||||
START_ORDER=("admin" "monitor" "snailjob")
|
||||
# 服务停止顺序(与启动相反)
|
||||
STOP_ORDER=("snailjob" "monitor" "admin")
|
||||
|
||||
# 检查脚本文件是否存在
|
||||
check_scripts() {
|
||||
local missing=0
|
||||
|
||||
if [ ! -f "$ADMIN_SCRIPT" ]; then
|
||||
echo -e "${RED}错误: 主应用启动脚本不存在: $ADMIN_SCRIPT${NC}"
|
||||
missing=1
|
||||
fi
|
||||
|
||||
if [ ! -f "$MONITOR_SCRIPT" ]; then
|
||||
echo -e "${RED}错误: 监控服务启动脚本不存在: $MONITOR_SCRIPT${NC}"
|
||||
missing=1
|
||||
fi
|
||||
|
||||
if [ ! -f "$SNAILJOB_SCRIPT" ]; then
|
||||
echo -e "${RED}错误: 任务调度启动脚本不存在: $SNAILJOB_SCRIPT${NC}"
|
||||
missing=1
|
||||
fi
|
||||
|
||||
if [ $missing -eq 1 ]; then
|
||||
echo -e "${YELLOW}请确保所有启动脚本都存在并具有执行权限${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 确保脚本有执行权限
|
||||
chmod +x "$ADMIN_SCRIPT" "$MONITOR_SCRIPT" "$SNAILJOB_SCRIPT" 2>/dev/null
|
||||
}
|
||||
|
||||
# 执行单个服务操作
|
||||
execute_service_action() {
|
||||
local service=$1
|
||||
local action=$2
|
||||
local script=""
|
||||
|
||||
case $service in
|
||||
"admin")
|
||||
script="$ADMIN_SCRIPT"
|
||||
;;
|
||||
"monitor")
|
||||
script="$MONITOR_SCRIPT"
|
||||
;;
|
||||
"snailjob")
|
||||
script="$SNAILJOB_SCRIPT"
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}未知服务: $service${NC}"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -f "$script" ]; then
|
||||
echo -e "${CYAN}正在对 $service 执行 $action 操作...${NC}"
|
||||
"$script" "$action"
|
||||
return $?
|
||||
else
|
||||
echo -e "${RED}脚本文件不存在: $script${NC}"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 启动所有服务
|
||||
start_all() {
|
||||
echo -e "${BLUE}==================== 启动所有RuoYi服务 ====================${NC}"
|
||||
|
||||
check_scripts
|
||||
|
||||
local success=0
|
||||
local total=${#START_ORDER[@]}
|
||||
|
||||
for service in "${START_ORDER[@]}"; do
|
||||
echo
|
||||
if execute_service_action "$service" "start"; then
|
||||
((success++))
|
||||
echo -e "${GREEN}✓ $service 启动成功${NC}"
|
||||
# 服务间启动间隔,确保依赖关系
|
||||
if [ "$service" = "admin" ]; then
|
||||
echo -e "${YELLOW}等待主应用完全启动...${NC}"
|
||||
sleep 5
|
||||
fi
|
||||
else
|
||||
echo -e "${RED}✗ $service 启动失败${NC}"
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
echo -e "${BLUE}==================== 启动结果汇总 ====================${NC}"
|
||||
echo -e "${GREEN}成功启动: $success/$total 个服务${NC}"
|
||||
|
||||
if [ $success -eq $total ]; then
|
||||
echo -e "${GREEN}🎉 所有服务启动成功!${NC}"
|
||||
echo
|
||||
echo "访问地址:"
|
||||
echo " - 主应用: http://localhost:8080"
|
||||
echo " - 监控中心: http://localhost:9090/admin"
|
||||
echo " - 任务调度: http://localhost:8800/snail-job"
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ 部分服务启动失败,请检查日志${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
# 停止所有服务
|
||||
stop_all() {
|
||||
echo -e "${BLUE}==================== 停止所有RuoYi服务 ====================${NC}"
|
||||
|
||||
check_scripts
|
||||
|
||||
local success=0
|
||||
local total=${#STOP_ORDER[@]}
|
||||
|
||||
for service in "${STOP_ORDER[@]}"; do
|
||||
echo
|
||||
if execute_service_action "$service" "stop"; then
|
||||
((success++))
|
||||
echo -e "${GREEN}✓ $service 停止成功${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ $service 停止失败或未运行${NC}"
|
||||
((success++)) # 未运行也算成功
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
echo -e "${BLUE}==================== 停止结果汇总 ====================${NC}"
|
||||
echo -e "${GREEN}处理完成: $success/$total 个服务${NC}"
|
||||
echo -e "${GREEN}🛑 所有服务已停止${NC}"
|
||||
}
|
||||
|
||||
# 重启所有服务
|
||||
restart_all() {
|
||||
echo -e "${BLUE}==================== 重启所有RuoYi服务 ====================${NC}"
|
||||
|
||||
stop_all
|
||||
echo -e "${YELLOW}等待系统资源释放...${NC}"
|
||||
sleep 3
|
||||
start_all
|
||||
}
|
||||
|
||||
# 查看所有服务状态
|
||||
status_all() {
|
||||
echo -e "${BLUE}==================== 所有RuoYi服务状态 ====================${NC}"
|
||||
|
||||
check_scripts
|
||||
|
||||
local running=0
|
||||
local total=${#START_ORDER[@]}
|
||||
|
||||
for service in "${START_ORDER[@]}"; do
|
||||
echo
|
||||
if execute_service_action "$service" "status"; then
|
||||
((running++))
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
echo -e "${BLUE}==================== 状态汇总 ====================${NC}"
|
||||
echo -e "${GREEN}运行中: $running/$total 个服务${NC}"
|
||||
|
||||
# 显示端口占用情况
|
||||
echo
|
||||
echo "端口监听状态:"
|
||||
netstat -tlnp 2>/dev/null | grep -E ":(8080|9090|8800) " | while IFS= read -r line; do
|
||||
echo " $line"
|
||||
done | column -t || echo " 无相关端口监听"
|
||||
}
|
||||
|
||||
# 查看所有服务日志
|
||||
logs_all() {
|
||||
echo -e "${BLUE}==================== 所有RuoYi服务日志 ====================${NC}"
|
||||
echo "请选择要查看日志的服务:"
|
||||
echo " 1) ruoyi-admin (主应用)"
|
||||
echo " 2) ruoyi-monitor-admin (监控中心)"
|
||||
echo " 3) ruoyi-snailjob-server (任务调度)"
|
||||
echo " 4) 查看所有服务的最新日志"
|
||||
|
||||
read -p "请输入选择 (1-4): " choice
|
||||
|
||||
case $choice in
|
||||
1)
|
||||
execute_service_action "admin" "logs"
|
||||
;;
|
||||
2)
|
||||
execute_service_action "monitor" "logs"
|
||||
;;
|
||||
3)
|
||||
execute_service_action "snailjob" "logs"
|
||||
;;
|
||||
4)
|
||||
echo -e "${CYAN}==================== 所有服务最新日志 ====================${NC}"
|
||||
for service in "${START_ORDER[@]}"; do
|
||||
echo -e "${YELLOW}--- $service 最新日志 ---${NC}"
|
||||
case $service in
|
||||
"admin")
|
||||
tail -5 /var/log/ruoyi/ruoyi-admin.log 2>/dev/null || echo "日志文件不存在"
|
||||
;;
|
||||
"monitor")
|
||||
tail -5 /var/log/ruoyi/ruoyi-monitor-admin.log 2>/dev/null || echo "日志文件不存在"
|
||||
;;
|
||||
"snailjob")
|
||||
tail -5 /var/log/ruoyi/ruoyi-snailjob-server.log 2>/dev/null || echo "日志文件不存在"
|
||||
;;
|
||||
esac
|
||||
echo
|
||||
done
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}无效选择${NC}"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# 服务健康检查
|
||||
health_check() {
|
||||
echo -e "${BLUE}==================== 服务健康检查 ====================${NC}"
|
||||
|
||||
local healthy=0
|
||||
local total=3
|
||||
|
||||
# 检查主应用
|
||||
echo -n "检查主应用(8080): "
|
||||
if curl -s --connect-timeout 5 http://localhost:8080 >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}✓ 健康${NC}"
|
||||
((healthy++))
|
||||
else
|
||||
echo -e "${RED}✗ 异常${NC}"
|
||||
fi
|
||||
|
||||
# 检查监控中心
|
||||
echo -n "检查监控中心(9090): "
|
||||
if curl -s --connect-timeout 5 http://localhost:9090/admin >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}✓ 健康${NC}"
|
||||
((healthy++))
|
||||
else
|
||||
echo -e "${RED}✗ 异常${NC}"
|
||||
fi
|
||||
|
||||
# 检查任务调度
|
||||
echo -n "检查任务调度(8800): "
|
||||
if curl -s --connect-timeout 5 http://localhost:8800/snail-job >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}✓ 健康${NC}"
|
||||
((healthy++))
|
||||
else
|
||||
echo -e "${RED}✗ 异常${NC}"
|
||||
fi
|
||||
|
||||
echo
|
||||
echo -e "${BLUE}健康状态: $healthy/$total 个服务正常${NC}"
|
||||
|
||||
if [ $healthy -eq $total ]; then
|
||||
echo -e "${GREEN}🎉 所有服务运行正常!${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ 部分服务异常,建议检查日志${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
# 显示帮助信息
|
||||
usage() {
|
||||
echo -e "${BLUE}RuoYi 所有服务统一管理脚本${NC}"
|
||||
echo "用法: $0 {start|stop|restart|status|logs|health|help}"
|
||||
echo ""
|
||||
echo "命令说明:"
|
||||
echo " start - 启动所有服务 (按依赖顺序)"
|
||||
echo " stop - 停止所有服务 (按相反顺序)"
|
||||
echo " restart - 重启所有服务"
|
||||
echo " status - 查看所有服务状态"
|
||||
echo " logs - 交互式查看服务日志"
|
||||
echo " health - 服务健康检查"
|
||||
echo " help - 显示此帮助信息"
|
||||
echo ""
|
||||
echo "服务清单:"
|
||||
echo " 1. ruoyi-admin - 主应用服务 (端口:8080)"
|
||||
echo " 2. ruoyi-monitor-admin - 监控中心 (端口:9090)"
|
||||
echo " 3. ruoyi-snailjob-server - 任务调度中心 (端口:8800)"
|
||||
echo ""
|
||||
echo "启动顺序: admin → monitor → snailjob"
|
||||
echo "停止顺序: snailjob → monitor → admin"
|
||||
echo ""
|
||||
echo "配置路径:"
|
||||
echo " 脚本目录: $SCRIPT_DIR"
|
||||
echo " 日志目录: /var/log/ruoyi/"
|
||||
echo " PID目录: /var/run/"
|
||||
}
|
||||
|
||||
# 主逻辑
|
||||
case "$1" in
|
||||
start)
|
||||
start_all
|
||||
;;
|
||||
stop)
|
||||
stop_all
|
||||
;;
|
||||
restart)
|
||||
restart_all
|
||||
;;
|
||||
status)
|
||||
status_all
|
||||
;;
|
||||
logs)
|
||||
logs_all
|
||||
;;
|
||||
health)
|
||||
health_check
|
||||
;;
|
||||
help|--help|-h)
|
||||
usage
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}无效参数: $1${NC}"
|
||||
echo
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
@@ -1,238 +0,0 @@
|
||||
#!/bin/bash
|
||||
# =============================================================================
|
||||
# RuoYi Admin 服务启动脚本 (CentOS)
|
||||
# 用途: 启动、停止、重启、查看状态 ruoyi-admin.jar
|
||||
# 端口: 8080 (主应用)
|
||||
# =============================================================================
|
||||
|
||||
# 配置变量
|
||||
APP_NAME="ruoyi-admin"
|
||||
JAR_NAME="ruoyi-admin.jar"
|
||||
JAR_PATH="/opt/ruoyi/admin"
|
||||
JAR_FILE="$JAR_PATH/$JAR_NAME"
|
||||
PID_FILE="/var/run/${APP_NAME}.pid"
|
||||
LOG_DIR="/var/log/ruoyi"
|
||||
LOG_FILE="$LOG_DIR/${APP_NAME}.log"
|
||||
JVM_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_DIR"
|
||||
SPRING_PROFILES="prod"
|
||||
|
||||
# 颜色配置
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 创建必要目录
|
||||
create_dirs() {
|
||||
sudo mkdir -p "$LOG_DIR"
|
||||
sudo mkdir -p "$(dirname "$PID_FILE")"
|
||||
sudo chown -R $(whoami):$(whoami) "$LOG_DIR"
|
||||
}
|
||||
|
||||
# 检查jar文件是否存在
|
||||
check_jar() {
|
||||
if [ ! -f "$JAR_FILE" ]; then
|
||||
echo -e "${RED}错误: JAR文件不存在: $JAR_FILE${NC}"
|
||||
echo -e "${YELLOW}请确保已将jar包放置到: $JAR_PATH${NC}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 获取进程ID
|
||||
get_pid() {
|
||||
if [ -f "$PID_FILE" ]; then
|
||||
cat "$PID_FILE"
|
||||
else
|
||||
ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}'
|
||||
fi
|
||||
}
|
||||
|
||||
# 检查服务状态
|
||||
is_running() {
|
||||
local pid=$(get_pid)
|
||||
if [ -n "$pid" ]; then
|
||||
if ps -p "$pid" > /dev/null 2>&1; then
|
||||
return 0
|
||||
else
|
||||
# PID文件存在但进程不存在,清理PID文件
|
||||
[ -f "$PID_FILE" ] && rm -f "$PID_FILE"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 启动服务
|
||||
start() {
|
||||
echo -e "${BLUE}==================== 启动 $APP_NAME ====================${NC}"
|
||||
|
||||
check_jar
|
||||
create_dirs
|
||||
|
||||
if is_running; then
|
||||
local pid=$(get_pid)
|
||||
echo -e "${YELLOW}$APP_NAME 已经在运行中,PID: $pid${NC}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}正在启动 $APP_NAME...${NC}"
|
||||
echo "JAR文件: $JAR_FILE"
|
||||
echo "日志文件: $LOG_FILE"
|
||||
echo "JVM参数: $JVM_OPTS"
|
||||
echo "Spring环境: $SPRING_PROFILES"
|
||||
|
||||
# 启动应用
|
||||
nohup java $JVM_OPTS \
|
||||
-jar "$JAR_FILE" \
|
||||
--spring.profiles.active="$SPRING_PROFILES" \
|
||||
--logging.file.name="$LOG_FILE" \
|
||||
> "$LOG_FILE" 2>&1 &
|
||||
|
||||
local pid=$!
|
||||
echo $pid > "$PID_FILE"
|
||||
|
||||
# 等待启动
|
||||
echo -e "${YELLOW}等待应用启动...${NC}"
|
||||
sleep 3
|
||||
|
||||
if is_running; then
|
||||
echo -e "${GREEN}✓ $APP_NAME 启动成功!${NC}"
|
||||
echo "PID: $(get_pid)"
|
||||
echo "端口: 8080"
|
||||
echo "日志: tail -f $LOG_FILE"
|
||||
echo "访问: http://localhost:8080"
|
||||
else
|
||||
echo -e "${RED}✗ $APP_NAME 启动失败!${NC}"
|
||||
echo "请查看日志: tail -f $LOG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 停止服务
|
||||
stop() {
|
||||
echo -e "${BLUE}==================== 停止 $APP_NAME ====================${NC}"
|
||||
|
||||
if ! is_running; then
|
||||
echo -e "${YELLOW}$APP_NAME 未运行${NC}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local pid=$(get_pid)
|
||||
echo -e "${GREEN}正在停止 $APP_NAME,PID: $pid${NC}"
|
||||
|
||||
# 优雅停止
|
||||
kill "$pid"
|
||||
|
||||
# 等待进程停止
|
||||
local count=0
|
||||
while is_running && [ $count -lt 30 ]; do
|
||||
sleep 1
|
||||
count=$((count + 1))
|
||||
echo -n "."
|
||||
done
|
||||
echo
|
||||
|
||||
if is_running; then
|
||||
echo -e "${YELLOW}优雅停止超时,强制终止进程...${NC}"
|
||||
kill -9 "$pid"
|
||||
sleep 2
|
||||
fi
|
||||
|
||||
if is_running; then
|
||||
echo -e "${RED}✗ $APP_NAME 停止失败!${NC}"
|
||||
exit 1
|
||||
else
|
||||
echo -e "${GREEN}✓ $APP_NAME 已停止${NC}"
|
||||
[ -f "$PID_FILE" ] && rm -f "$PID_FILE"
|
||||
fi
|
||||
}
|
||||
|
||||
# 重启服务
|
||||
restart() {
|
||||
echo -e "${BLUE}==================== 重启 $APP_NAME ====================${NC}"
|
||||
stop
|
||||
sleep 2
|
||||
start
|
||||
}
|
||||
|
||||
# 查看状态
|
||||
status() {
|
||||
echo -e "${BLUE}==================== $APP_NAME 状态 ====================${NC}"
|
||||
|
||||
if is_running; then
|
||||
local pid=$(get_pid)
|
||||
echo -e "${GREEN}✓ $APP_NAME 正在运行${NC}"
|
||||
echo "PID: $pid"
|
||||
echo "端口: 8080"
|
||||
echo "内存使用:"
|
||||
ps -p "$pid" -o pid,ppid,etime,pmem,pcpu,comm --no-headers
|
||||
echo "网络端口:"
|
||||
netstat -tlnp 2>/dev/null | grep ":8080 " || echo "端口8080未监听"
|
||||
else
|
||||
echo -e "${RED}✗ $APP_NAME 未运行${NC}"
|
||||
fi
|
||||
|
||||
echo "最近日志:"
|
||||
if [ -f "$LOG_FILE" ]; then
|
||||
tail -10 "$LOG_FILE"
|
||||
else
|
||||
echo "日志文件不存在: $LOG_FILE"
|
||||
fi
|
||||
}
|
||||
|
||||
# 查看日志
|
||||
logs() {
|
||||
echo -e "${BLUE}==================== $APP_NAME 日志 ====================${NC}"
|
||||
if [ -f "$LOG_FILE" ]; then
|
||||
tail -f "$LOG_FILE"
|
||||
else
|
||||
echo -e "${RED}日志文件不存在: $LOG_FILE${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
# 显示帮助信息
|
||||
usage() {
|
||||
echo -e "${BLUE}RuoYi Admin 服务管理脚本${NC}"
|
||||
echo "用法: $0 {start|stop|restart|status|logs}"
|
||||
echo ""
|
||||
echo "命令说明:"
|
||||
echo " start - 启动服务"
|
||||
echo " stop - 停止服务"
|
||||
echo " restart - 重启服务"
|
||||
echo " status - 查看状态"
|
||||
echo " logs - 查看实时日志"
|
||||
echo ""
|
||||
echo "配置信息:"
|
||||
echo " 应用名称: $APP_NAME"
|
||||
echo " JAR文件: $JAR_FILE"
|
||||
echo " PID文件: $PID_FILE"
|
||||
echo " 日志文件: $LOG_FILE"
|
||||
echo " 服务端口: 8080"
|
||||
}
|
||||
|
||||
# 主逻辑
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
restart)
|
||||
restart
|
||||
;;
|
||||
status)
|
||||
status
|
||||
;;
|
||||
logs)
|
||||
logs
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
@@ -1,244 +0,0 @@
|
||||
#!/bin/bash
|
||||
# =============================================================================
|
||||
# RuoYi Monitor Admin 监控服务启动脚本 (CentOS)
|
||||
# 用途: 启动、停止、重启、查看状态 ruoyi-monitor-admin.jar
|
||||
# 端口: 9090 (监控中心)
|
||||
# =============================================================================
|
||||
|
||||
# 配置变量
|
||||
APP_NAME="ruoyi-monitor-admin"
|
||||
JAR_NAME="ruoyi-monitor-admin.jar"
|
||||
JAR_PATH="/opt/ruoyi/monitor"
|
||||
JAR_FILE="$JAR_PATH/$JAR_NAME"
|
||||
PID_FILE="/var/run/${APP_NAME}.pid"
|
||||
LOG_DIR="/var/log/ruoyi"
|
||||
LOG_FILE="$LOG_DIR/${APP_NAME}.log"
|
||||
JVM_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_DIR"
|
||||
SPRING_PROFILES="prod"
|
||||
|
||||
# 颜色配置
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 创建必要目录
|
||||
create_dirs() {
|
||||
sudo mkdir -p "$LOG_DIR"
|
||||
sudo mkdir -p "$(dirname "$PID_FILE")"
|
||||
sudo chown -R $(whoami):$(whoami) "$LOG_DIR"
|
||||
}
|
||||
|
||||
# 检查jar文件是否存在
|
||||
check_jar() {
|
||||
if [ ! -f "$JAR_FILE" ]; then
|
||||
echo -e "${RED}错误: JAR文件不存在: $JAR_FILE${NC}"
|
||||
echo -e "${YELLOW}请确保已将jar包放置到: $JAR_PATH${NC}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 获取进程ID
|
||||
get_pid() {
|
||||
if [ -f "$PID_FILE" ]; then
|
||||
cat "$PID_FILE"
|
||||
else
|
||||
ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}'
|
||||
fi
|
||||
}
|
||||
|
||||
# 检查服务状态
|
||||
is_running() {
|
||||
local pid=$(get_pid)
|
||||
if [ -n "$pid" ]; then
|
||||
if ps -p "$pid" > /dev/null 2>&1; then
|
||||
return 0
|
||||
else
|
||||
# PID文件存在但进程不存在,清理PID文件
|
||||
[ -f "$PID_FILE" ] && rm -f "$PID_FILE"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 启动服务
|
||||
start() {
|
||||
echo -e "${BLUE}==================== 启动 $APP_NAME ====================${NC}"
|
||||
|
||||
check_jar
|
||||
create_dirs
|
||||
|
||||
if is_running; then
|
||||
local pid=$(get_pid)
|
||||
echo -e "${YELLOW}$APP_NAME 已经在运行中,PID: $pid${NC}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}正在启动 $APP_NAME...${NC}"
|
||||
echo "JAR文件: $JAR_FILE"
|
||||
echo "日志文件: $LOG_FILE"
|
||||
echo "JVM参数: $JVM_OPTS"
|
||||
echo "Spring环境: $SPRING_PROFILES"
|
||||
|
||||
# 启动应用
|
||||
nohup java $JVM_OPTS \
|
||||
-jar "$JAR_FILE" \
|
||||
--spring.profiles.active="$SPRING_PROFILES" \
|
||||
--logging.file.name="$LOG_FILE" \
|
||||
> "$LOG_FILE" 2>&1 &
|
||||
|
||||
local pid=$!
|
||||
echo $pid > "$PID_FILE"
|
||||
|
||||
# 等待启动
|
||||
echo -e "${YELLOW}等待应用启动...${NC}"
|
||||
sleep 3
|
||||
|
||||
if is_running; then
|
||||
echo -e "${GREEN}✓ $APP_NAME 启动成功!${NC}"
|
||||
echo "PID: $(get_pid)"
|
||||
echo "端口: 9090"
|
||||
echo "日志: tail -f $LOG_FILE"
|
||||
echo "访问: http://localhost:9090/admin"
|
||||
echo "说明: 这是Spring Boot Admin监控中心"
|
||||
else
|
||||
echo -e "${RED}✗ $APP_NAME 启动失败!${NC}"
|
||||
echo "请查看日志: tail -f $LOG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 停止服务
|
||||
stop() {
|
||||
echo -e "${BLUE}==================== 停止 $APP_NAME ====================${NC}"
|
||||
|
||||
if ! is_running; then
|
||||
echo -e "${YELLOW}$APP_NAME 未运行${NC}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local pid=$(get_pid)
|
||||
echo -e "${GREEN}正在停止 $APP_NAME,PID: $pid${NC}"
|
||||
|
||||
# 优雅停止
|
||||
kill "$pid"
|
||||
|
||||
# 等待进程停止
|
||||
local count=0
|
||||
while is_running && [ $count -lt 30 ]; do
|
||||
sleep 1
|
||||
count=$((count + 1))
|
||||
echo -n "."
|
||||
done
|
||||
echo
|
||||
|
||||
if is_running; then
|
||||
echo -e "${YELLOW}优雅停止超时,强制终止进程...${NC}"
|
||||
kill -9 "$pid"
|
||||
sleep 2
|
||||
fi
|
||||
|
||||
if is_running; then
|
||||
echo -e "${RED}✗ $APP_NAME 停止失败!${NC}"
|
||||
exit 1
|
||||
else
|
||||
echo -e "${GREEN}✓ $APP_NAME 已停止${NC}"
|
||||
[ -f "$PID_FILE" ] && rm -f "$PID_FILE"
|
||||
fi
|
||||
}
|
||||
|
||||
# 重启服务
|
||||
restart() {
|
||||
echo -e "${BLUE}==================== 重启 $APP_NAME ====================${NC}"
|
||||
stop
|
||||
sleep 2
|
||||
start
|
||||
}
|
||||
|
||||
# 查看状态
|
||||
status() {
|
||||
echo -e "${BLUE}==================== $APP_NAME 状态 ====================${NC}"
|
||||
|
||||
if is_running; then
|
||||
local pid=$(get_pid)
|
||||
echo -e "${GREEN}✓ $APP_NAME 正在运行${NC}"
|
||||
echo "PID: $pid"
|
||||
echo "端口: 9090"
|
||||
echo "内存使用:"
|
||||
ps -p "$pid" -o pid,ppid,etime,pmem,pcpu,comm --no-headers
|
||||
echo "网络端口:"
|
||||
netstat -tlnp 2>/dev/null | grep ":9090 " || echo "端口9090未监听"
|
||||
else
|
||||
echo -e "${RED}✗ $APP_NAME 未运行${NC}"
|
||||
fi
|
||||
|
||||
echo "最近日志:"
|
||||
if [ -f "$LOG_FILE" ]; then
|
||||
tail -10 "$LOG_FILE"
|
||||
else
|
||||
echo "日志文件不存在: $LOG_FILE"
|
||||
fi
|
||||
}
|
||||
|
||||
# 查看日志
|
||||
logs() {
|
||||
echo -e "${BLUE}==================== $APP_NAME 日志 ====================${NC}"
|
||||
if [ -f "$LOG_FILE" ]; then
|
||||
tail -f "$LOG_FILE"
|
||||
else
|
||||
echo -e "${RED}日志文件不存在: $LOG_FILE${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
# 显示帮助信息
|
||||
usage() {
|
||||
echo -e "${BLUE}RuoYi Monitor Admin 监控服务管理脚本${NC}"
|
||||
echo "用法: $0 {start|stop|restart|status|logs}"
|
||||
echo ""
|
||||
echo "命令说明:"
|
||||
echo " start - 启动服务"
|
||||
echo " stop - 停止服务"
|
||||
echo " restart - 重启服务"
|
||||
echo " status - 查看状态"
|
||||
echo " logs - 查看实时日志"
|
||||
echo ""
|
||||
echo "配置信息:"
|
||||
echo " 应用名称: $APP_NAME"
|
||||
echo " JAR文件: $JAR_FILE"
|
||||
echo " PID文件: $PID_FILE"
|
||||
echo " 日志文件: $LOG_FILE"
|
||||
echo " 服务端口: 9090"
|
||||
echo " 访问地址: http://localhost:9090/admin"
|
||||
echo ""
|
||||
echo "服务说明:"
|
||||
echo " 这是Spring Boot Admin监控中心,用于监控主应用的运行状态"
|
||||
echo " 需要在主应用启动后再启动此服务"
|
||||
}
|
||||
|
||||
# 主逻辑
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
restart)
|
||||
restart
|
||||
;;
|
||||
status)
|
||||
status
|
||||
;;
|
||||
logs)
|
||||
logs
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
@@ -1,245 +0,0 @@
|
||||
#!/bin/bash
|
||||
# =============================================================================
|
||||
# RuoYi SnailJob Server 任务调度服务启动脚本 (CentOS)
|
||||
# 用途: 启动、停止、重启、查看状态 ruoyi-snailjob-server.jar
|
||||
# 端口: 8800 (任务调度中心)
|
||||
# =============================================================================
|
||||
|
||||
# 配置变量
|
||||
APP_NAME="ruoyi-snailjob-server"
|
||||
JAR_NAME="ruoyi-snailjob-server.jar"
|
||||
JAR_PATH="/opt/ruoyi/snailjob"
|
||||
JAR_FILE="$JAR_PATH/$JAR_NAME"
|
||||
PID_FILE="/var/run/${APP_NAME}.pid"
|
||||
LOG_DIR="/var/log/ruoyi"
|
||||
LOG_FILE="$LOG_DIR/${APP_NAME}.log"
|
||||
JVM_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_DIR"
|
||||
SPRING_PROFILES="prod"
|
||||
|
||||
# 颜色配置
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 创建必要目录
|
||||
create_dirs() {
|
||||
sudo mkdir -p "$LOG_DIR"
|
||||
sudo mkdir -p "$(dirname "$PID_FILE")"
|
||||
sudo chown -R $(whoami):$(whoami) "$LOG_DIR"
|
||||
}
|
||||
|
||||
# 检查jar文件是否存在
|
||||
check_jar() {
|
||||
if [ ! -f "$JAR_FILE" ]; then
|
||||
echo -e "${RED}错误: JAR文件不存在: $JAR_FILE${NC}"
|
||||
echo -e "${YELLOW}请确保已将jar包放置到: $JAR_PATH${NC}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 获取进程ID
|
||||
get_pid() {
|
||||
if [ -f "$PID_FILE" ]; then
|
||||
cat "$PID_FILE"
|
||||
else
|
||||
ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}'
|
||||
fi
|
||||
}
|
||||
|
||||
# 检查服务状态
|
||||
is_running() {
|
||||
local pid=$(get_pid)
|
||||
if [ -n "$pid" ]; then
|
||||
if ps -p "$pid" > /dev/null 2>&1; then
|
||||
return 0
|
||||
else
|
||||
# PID文件存在但进程不存在,清理PID文件
|
||||
[ -f "$PID_FILE" ] && rm -f "$PID_FILE"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 启动服务
|
||||
start() {
|
||||
echo -e "${BLUE}==================== 启动 $APP_NAME ====================${NC}"
|
||||
|
||||
check_jar
|
||||
create_dirs
|
||||
|
||||
if is_running; then
|
||||
local pid=$(get_pid)
|
||||
echo -e "${YELLOW}$APP_NAME 已经在运行中,PID: $pid${NC}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}正在启动 $APP_NAME...${NC}"
|
||||
echo "JAR文件: $JAR_FILE"
|
||||
echo "日志文件: $LOG_FILE"
|
||||
echo "JVM参数: $JVM_OPTS"
|
||||
echo "Spring环境: $SPRING_PROFILES"
|
||||
|
||||
# 启动应用
|
||||
nohup java $JVM_OPTS \
|
||||
-jar "$JAR_FILE" \
|
||||
--spring.profiles.active="$SPRING_PROFILES" \
|
||||
--logging.file.name="$LOG_FILE" \
|
||||
> "$LOG_FILE" 2>&1 &
|
||||
|
||||
local pid=$!
|
||||
echo $pid > "$PID_FILE"
|
||||
|
||||
# 等待启动
|
||||
echo -e "${YELLOW}等待应用启动...${NC}"
|
||||
sleep 3
|
||||
|
||||
if is_running; then
|
||||
echo -e "${GREEN}✓ $APP_NAME 启动成功!${NC}"
|
||||
echo "PID: $(get_pid)"
|
||||
echo "端口: 8800"
|
||||
echo "日志: tail -f $LOG_FILE"
|
||||
echo "访问: http://localhost:8800/snail-job"
|
||||
echo "说明: 这是SnailJob分布式任务调度中心"
|
||||
else
|
||||
echo -e "${RED}✗ $APP_NAME 启动失败!${NC}"
|
||||
echo "请查看日志: tail -f $LOG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 停止服务
|
||||
stop() {
|
||||
echo -e "${BLUE}==================== 停止 $APP_NAME ====================${NC}"
|
||||
|
||||
if ! is_running; then
|
||||
echo -e "${YELLOW}$APP_NAME 未运行${NC}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local pid=$(get_pid)
|
||||
echo -e "${GREEN}正在停止 $APP_NAME,PID: $pid${NC}"
|
||||
|
||||
# 优雅停止
|
||||
kill "$pid"
|
||||
|
||||
# 等待进程停止
|
||||
local count=0
|
||||
while is_running && [ $count -lt 30 ]; do
|
||||
sleep 1
|
||||
count=$((count + 1))
|
||||
echo -n "."
|
||||
done
|
||||
echo
|
||||
|
||||
if is_running; then
|
||||
echo -e "${YELLOW}优雅停止超时,强制终止进程...${NC}"
|
||||
kill -9 "$pid"
|
||||
sleep 2
|
||||
fi
|
||||
|
||||
if is_running; then
|
||||
echo -e "${RED}✗ $APP_NAME 停止失败!${NC}"
|
||||
exit 1
|
||||
else
|
||||
echo -e "${GREEN}✓ $APP_NAME 已停止${NC}"
|
||||
[ -f "$PID_FILE" ] && rm -f "$PID_FILE"
|
||||
fi
|
||||
}
|
||||
|
||||
# 重启服务
|
||||
restart() {
|
||||
echo -e "${BLUE}==================== 重启 $APP_NAME ====================${NC}"
|
||||
stop
|
||||
sleep 2
|
||||
start
|
||||
}
|
||||
|
||||
# 查看状态
|
||||
status() {
|
||||
echo -e "${BLUE}==================== $APP_NAME 状态 ====================${NC}"
|
||||
|
||||
if is_running; then
|
||||
local pid=$(get_pid)
|
||||
echo -e "${GREEN}✓ $APP_NAME 正在运行${NC}"
|
||||
echo "PID: $pid"
|
||||
echo "端口: 8800"
|
||||
echo "内存使用:"
|
||||
ps -p "$pid" -o pid,ppid,etime,pmem,pcpu,comm --no-headers
|
||||
echo "网络端口:"
|
||||
netstat -tlnp 2>/dev/null | grep ":8800 " || echo "端口8800未监听"
|
||||
else
|
||||
echo -e "${RED}✗ $APP_NAME 未运行${NC}"
|
||||
fi
|
||||
|
||||
echo "最近日志:"
|
||||
if [ -f "$LOG_FILE" ]; then
|
||||
tail -10 "$LOG_FILE"
|
||||
else
|
||||
echo "日志文件不存在: $LOG_FILE"
|
||||
fi
|
||||
}
|
||||
|
||||
# 查看日志
|
||||
logs() {
|
||||
echo -e "${BLUE}==================== $APP_NAME 日志 ====================${NC}"
|
||||
if [ -f "$LOG_FILE" ]; then
|
||||
tail -f "$LOG_FILE"
|
||||
else
|
||||
echo -e "${RED}日志文件不存在: $LOG_FILE${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
# 显示帮助信息
|
||||
usage() {
|
||||
echo -e "${BLUE}RuoYi SnailJob Server 任务调度服务管理脚本${NC}"
|
||||
echo "用法: $0 {start|stop|restart|status|logs}"
|
||||
echo ""
|
||||
echo "命令说明:"
|
||||
echo " start - 启动服务"
|
||||
echo " stop - 停止服务"
|
||||
echo " restart - 重启服务"
|
||||
echo " status - 查看状态"
|
||||
echo " logs - 查看实时日志"
|
||||
echo ""
|
||||
echo "配置信息:"
|
||||
echo " 应用名称: $APP_NAME"
|
||||
echo " JAR文件: $JAR_FILE"
|
||||
echo " PID文件: $PID_FILE"
|
||||
echo " 日志文件: $LOG_FILE"
|
||||
echo " 服务端口: 8800"
|
||||
echo " 访问地址: http://localhost:8800/snail-job"
|
||||
echo ""
|
||||
echo "服务说明:"
|
||||
echo " 这是SnailJob分布式任务调度中心,用于管理和调度定时任务"
|
||||
echo " 提供任务执行、监控、日志查看等功能"
|
||||
echo " 可以独立于主应用运行"
|
||||
}
|
||||
|
||||
# 主逻辑
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
restart)
|
||||
restart
|
||||
;;
|
||||
status)
|
||||
status
|
||||
;;
|
||||
logs)
|
||||
logs
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
Reference in new issue
Block a user