first commit
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
#!/bin/bash
|
||||
# ./ry.sh start 启动 stop 停止 restart 重启 status 状态
|
||||
AppName=ruoyi-admin.jar
|
||||
|
||||
export JAVA_HOME=/project/jdk-21.0.10
|
||||
export PATH=$JAVA_HOME/bin:$PATH
|
||||
|
||||
# 自动检测 CPU 核数,选择 JVM 规格(可用 JVM_PROFILE 环境变量覆盖)
|
||||
if [ -z "$JVM_PROFILE" ]; then
|
||||
CPUS=$(nproc)
|
||||
if [ "$CPUS" -le 16 ]; then
|
||||
JVM_PROFILE="16c32g"
|
||||
else
|
||||
JVM_PROFILE="32c64g"
|
||||
fi
|
||||
fi
|
||||
|
||||
case "$JVM_PROFILE" in
|
||||
16c32g)
|
||||
HEAP_SIZE="10g"
|
||||
GC_REGION="8m"
|
||||
GC_PARALLEL="5"
|
||||
GC_CONC="2"
|
||||
;;
|
||||
32c64g)
|
||||
HEAP_SIZE="22g"
|
||||
GC_REGION="16m"
|
||||
GC_PARALLEL="10"
|
||||
GC_CONC="3"
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: unknown JVM_PROFILE=$JVM_PROFILE (supported: 16c32g, 32c64g)"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "JVM Profile: ${JVM_PROFILE} | Heap: ${HEAP_SIZE} | ParallelGCThreads=${GC_PARALLEL} ConcGCThreads=${GC_CONC}"
|
||||
|
||||
# Spring Profile(可用 SPRING_PROFILE 环境变量覆盖)
|
||||
SPRING_PROFILE="${SPRING_PROFILE:-pro}"
|
||||
|
||||
# JVM参数
|
||||
LOG_DIR=/www/ruoyi/logs
|
||||
JVM_OPTS="-Dname=$AppName -Duser.timezone=Asia/Shanghai -Xms${HEAP_SIZE} -Xmx${HEAP_SIZE} -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=${GC_REGION} -XX:ParallelGCThreads=${GC_PARALLEL} -XX:ConcGCThreads=${GC_CONC} -XX:InitiatingHeapOccupancyPercent=35 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_DIR}/ -Xlog:gc*=info:file=${LOG_DIR}/gc.log:time,uptime:filecount=10,filesize=50M"
|
||||
|
||||
if [ "$1" = "" ]; then
|
||||
echo -e "\033[0;31m 未输入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$AppName" = "" ]; then
|
||||
echo -e "\033[0;31m 未输入应用名 \033[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
get_pid() {
|
||||
ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'
|
||||
}
|
||||
|
||||
start() {
|
||||
PID=`get_pid`
|
||||
if [ x"$PID" != x"" ]; then
|
||||
echo "$AppName is running..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p $LOG_DIR
|
||||
|
||||
nohup java $JVM_OPTS -Dspring.profiles.active=$SPRING_PROFILE -jar $AppName > /dev/null 2>&1 &
|
||||
|
||||
sleep 3
|
||||
PID=`get_pid`
|
||||
if [ x"$PID" != x"" ]; then
|
||||
echo "Start $AppName success..."
|
||||
else
|
||||
echo "ERROR: $AppName failed to start, check logs"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
stop() {
|
||||
echo "Stop $AppName"
|
||||
|
||||
PID=`get_pid`
|
||||
if [ x"$PID" = x"" ]; then
|
||||
echo "$AppName already stopped."
|
||||
return
|
||||
fi
|
||||
|
||||
TARGET_PID=$PID
|
||||
kill -TERM $TARGET_PID
|
||||
echo "$AppName (pid:$TARGET_PID) exiting..."
|
||||
|
||||
timeout=10
|
||||
count=0
|
||||
while kill -0 $TARGET_PID 2>/dev/null; do
|
||||
count=$((count + 1))
|
||||
if [ $count -gt $timeout ]; then
|
||||
echo "$AppName graceful shutdown timed out after ${timeout}s, force killing..."
|
||||
kill -9 $TARGET_PID 2>/dev/null || true
|
||||
sleep 2
|
||||
if kill -0 $TARGET_PID 2>/dev/null; then
|
||||
echo "ERROR: $AppName still alive (pid:$TARGET_PID) after kill -9, abort."
|
||||
exit 1
|
||||
fi
|
||||
echo "$AppName force killed."
|
||||
return
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
echo "$AppName exited."
|
||||
}
|
||||
|
||||
restart() {
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
status() {
|
||||
PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`
|
||||
if [ $PID != 0 ];then
|
||||
echo "$AppName is running..."
|
||||
else
|
||||
echo "$AppName is not running..."
|
||||
fi
|
||||
}
|
||||
|
||||
case $1 in
|
||||
start)
|
||||
start;;
|
||||
stop)
|
||||
stop;;
|
||||
restart)
|
||||
restart;;
|
||||
status)
|
||||
status;;
|
||||
*)
|
||||
echo -e "\033[0;31m 未输入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m"
|
||||
exit 1;;
|
||||
esac
|
||||
Reference in New Issue
Block a user