0
点赞
收藏
分享

微信扫一扫

shell脚本控制jar包启停


#!/bin/bash
# vim:sw=4:ts=4:et
<<INFO
AUTHOR:运维@小兵
DATE:2022-09-09
DESCRIBE:控制jar包启停
SYSTEM:CentOS7/RedHat7
WARNING:
MODIFY:
INFO

set -e

WORKDIR=$(cd `dirname $0`;pwd) #脚本所在路径
SERVICE_PORT=12345 #java服务监听端口
SERVICE_USER=admin #启动jar包用户
JAVA_OPT="-Xmx3072m -Xms3072m -XX:MaxMetaspaceSize=1024M -XX:MetaspaceSize=1024M -XX:MaxMetaspaceFreeRatio=95 -Dfile.encoding=utf-8"
JAR_NAME=devops.jar #jar包名字

#停止服务
Stop_Svc(){
echo "INFO:Begin Stop Service..."
pid=$(ps -ef | grep java | grep -v grep | grep -w "${JAR_NAME}" | grep ${SERVICE_USER} | awk '{print $2}')
if [[ -n ${pid} ]];then
for pid in $(echo ${pid})
do
echo "INFO:kill pid ${pid}"
kill ${pid}
done
sleep 5
else
echo "WARN:Service Is Stop"
fi
}

#启动服务
Start_Svc(){
if ss -nutlp | egrep -w ":${SERVICE_PORT}\b" &> /dev/null;then
echo "WARN:Service Is Running" && exit 0
fi
echo "INFO:Begin Start Service,Please Wait..."
[[ ! -f ${WORKDIR}/${JAR_NAME} ]] && echo "ERROR:${WORKDIR}/${JAR_NAME} && exit 1
cd ${WORKDIR}
nohup java -Xbootclasspath/a:./config/ ${JAVA_OPT} -jar ${JAR_NAME} --server.port=${SERVICE_PORT} > log.out 2>&1 &
local num=0
while [[ ${num} -lt 10 ]] #等待服务启动时间,5*10秒
do
sleep 5
if ss -nutlp | egrep -w ":${SERVICE_PORT}\b" &> /dev/null;then
echo "INFO:Service Start Success" && exit 0
else
num=$(echo $[num+=1])
fi
done
echo "ERROR:Service Start Fail" && exit 1
}

######################主程序######################
[[ $UID -eq 0 ]] && echo "ERROR:Not Allow root Excute,Please Use ${SERVICE_USER} && exit 1
[[ $# -ne 1 ]] && echo "ERROR:Invalid Param!!! eg:bash $0 && exit 1
case $1 in
start)
Start_Svc;;
stop)
Stop_Svc;;
restart)
Stop_Svc
Start_Svc;;
*)
echo "ERROR:Invalid Param!!! eg:bash $0 && exit 1
esac


举报

相关推荐

0 条评论