参考:https://blog.csdn.net/qq_35385687/article/details/123518062
#! /bin/sh #1,启动所有jar包:sh all.sh start all 或者./sh start all #2,停止所有jar包:sh all.sh stop all 或者./sh stop all #3,重启所有jar包:sh all.sh restart all 或者./sh restart all #4,重启或者停止单个jar包,只需要将all替换为相应的模块代码就行 # 端口号 PORTS=(8082 8090 8092) # 系统模块 MODULES=(boot gateway performance) # 系统模块名称 MODULE_NAMES=(基础模块 网关 绩效) # jar包数组 JARS=(boot.jar gateway.jar performance.jar) # jar包路径 #JAR_PATH='/usr/local/beta' JAR_PATH='./jars' # 日志路径 #LOG_PATH='/usr/local/beta' LOG_PATH='./logs' mkdir $LOG_PATH start() { local MODULE= local MODULE_NAME= local JAR_NAME= local command="$1" local commandOk=0 local count=0 local okCount=0 local port=0 for((i=0;i<${#MODULES[@]};i++)) do MODULE=${MODULES[$i]} MODULE_NAME=${MODULE_NAMES[$i]} JAR_NAME=${JARS[$i]} PORT=${PORTS[$i]} if [ "$command" == "all" ] || [ "$command" == "$MODULE" ];then commandOk=1 count=0 PID=`ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'` if [ -n "$PID" ];then echo "$MODULE---$MODULE_NAME:已经运行,PID=$PID" else # exec nohup java -jar $JAR_PATH/$JAR_NAME >> $LOG_PATH/$MODULE.log & echo "nohup java -jar $JAR_PATH/$JAR_NAME >> $LOG_PATH/$MODULE.log &" nohup java -jar $JAR_PATH/$JAR_NAME >> $LOG_PATH/$MODULE.log & PID=`netstat -apn | grep $PORT | awk '{print $7}' | cut -d/ -f 1` while [ -z "$PID" ] do if (($count == 30));then echo "$MODULE---$MODULE_NAME:$(expr $count \* 10)秒内未启动,请检查!" break fi count=$(($count+1)) echo "$MODULE_NAME启动中.................." sleep 10s PID=`netstat -apn | grep $PORT | awk '{print $7}' | cut -d/ -f 1` done okCount=$(($okCount+1)) echo "$MODULE---$MODULE_NAME:已经启动成功,PID=$PID" fi fi done if(($commandOk == 0));then echo "第二个参数请输入:all|boot|gateway|performance" else echo "............本次共启动:$okCount个服务..........." fi } stop() { local MODULE= local MODULE_NAME= local JAR_NAME= local command="$1" local commandOk=0 local okCount=0 for((i=0;i<${#MODULES[@]};i++)) do MODULE=${MODULES[$i]} MODULE_NAME=${MODULE_NAMES[$i]} JAR_NAME=${JARS[$i]} if [ "$command" = "all" ] || [ "$command" = "$MODULE" ];then commandOk=1 PID=`ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'` if [ -n "$PID" ];then echo "$MODULE---$MODULE_NAME:准备结束,PID=$PID" kill -9 $PID PID=`ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'` while [ -n "$PID" ] do sleep 3s PID=`ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'` done echo "$MODULE---$MODULE_NAME:成功结束" okCount=$(($okCount+1)) else echo "$MODULE---$MODULE_NAME:未运行" fi fi done if (($commandOk == 0));then echo "第二个参数请输入:all|boot|gateway|performance" else echo "............本次共停止:$okCount个服务............" fi }
case "$1" in start) start "$2" ;; stop) stop "$2" ;; restart) stop "$2" sleep 3s start "$2" ;; *) echo "第一个参数请输入:start|stop|restart" exit 1 ;; esac
1,启动所有jar包:sh all.sh start all 或者./sh start all
2,停止所有jar包:sh all.sh stop all 或者./sh stop all
3,重启所有jar包:sh all.sh restart all 或者./sh restart all
4,重启或者停止单个jar包,只需要将all替换为相应的模块代码就行,例如sh all.sh stop sms
原文链接:https://blog.csdn.net/zimojiang/article/details/125542890