个人网站设计及实现论文品牌建设的五个要素
linux一次启动多个jar包并且可以自定义路径和端口号
- 代码
- 使用
分享公司大神使用的一个脚步,可以一次启动多个jar包,也可以指定启动jar包
代码
#! /bin/sh
# 端口号
PORTS=(8080 8081 8082 8083)
# 模块
MODULES=(gateway auth system file)
# 模块名称
MODULE_NAMES=(网关服务 认证服务 服务 文件服务)
VERSION=(1.6.4 1.3.5 1.3.7 1.3.9)
# jar包数组
# JARS=(test-big-data-service-1.0.1-SNAPSHOT.jar test-content-service-1.0.1-SNAPSHOT.jar)
# jar包路径
JAR_PATH='/opt/usr'
# java 环境变量
JVM_OPTS="-Duser.timezone=Asia/Shanghai -Dfile.encoding=UTF-8"
JVM_OPTS="${JVM_OPTS} -Xmx2g -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParallelGC -XX:+UseParallelOldGC"
# 启动加载配置文件
PROFILES_ACTIVE=devstart(){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++));doMODULE=${MODULES[$i]}MODULE_NAME=${MODULE_NAMES[$i]}JAR_NAME=${MODULES[$i]}-${VERSION[$i]}.jarecho ${JAR_NAME}PORT=${PORTS[$i]}if [ "$command" == "all" ] || [ "$command" == "$MODULE" ];thencommandOk=1count=1PID=`ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`if [ -n "$PID" ];thenecho "$MODULE----$MODULE_NAME:已经运行,PID=$PID"elseecho "java ${JVM_OPTS} -jar $JAR_PATH/$JAR_NAME --spring.profiles.active=$PROFILES_ACTIVE > $JAR_PATH/logs/$MODULE.log 2>&1 &"exec java ${JVM_OPTS} -jar $JAR_PATH/$JAR_NAME --spring.profiles.active=$PROFILES_ACTIVE > $JAR_PATH/logs/$MODULE.log 2>&1 &echo "$MODULE_NAME启动中..."sleep 10sPID=`ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`while [ -z "$PID" ]doif (($count == 3));thenecho "$MODULE---$MODULE_NAME:$(expr $count \* 10)秒内未启动,请检查!"breakficount=$(($count+1))echo "$MODULE_NAME启动中.................."sleep 10sPID=`ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`doneif [ -n "$PID" ];thenokCount=$(($okCount+1))echo "$MODULE---$MODULE_NAME:已经启动成功,PID=$PID"elseecho "$MODULE---$MODULE_NAME:启动失败,请检查"fififidoneif(($commandOk == 0));thenecho "第二个参数请输入以下的某个值:"echo "--> all"for((i=0;i<${#MODULES[@]};i++));doecho "--> "${MODULES[$i]}doneelseecho "............启动成功!本次共启动:$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++));doMODULE=${MODULES[$i]}MODULE_NAME=${MODULE_NAMES[$i]}JAR_NAME=${MODULES[$i]}-${VERSION[$i]}.jarif [ "$command" = "all" ] || [ "$command" = "$MODULE" ];thencommandOk=1PID=`ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`if [ -n "$PID" ];thenecho "$MODULE---$MODULE_NAME:准备结束,PID=$PID"kill -9 $PIDPID=`ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`while [ -n "$PID" ]dosleep 3sPID=`ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`doneecho "$MODULE---$MODULE_NAME:成功结束"okCount=$(($okCount+1))elseecho "$MODULE---$MODULE_NAME:未运行"fifidoneif (($commandOk == 0));thenecho "第二个参数请输入以下的某个值:"echo "--> all"for((i=0;i<${#MODULES[@]};i++));doecho "--> "${MODULES[$i]}doneelseecho "............停止成功!本次共停止:$okCount个服务............"fi
}case "$1" instart)start "$2";;stop)stop "$2";;restart)stop "$2"sleep 3sstart "$2";;*)echo "第一个参数请输入:start|stop|restart"exit 1;;
esac
exit 0
使用
1.编辑脚步,复制代码到文本,改名为start_jar.sh
2.启动命令
start_jar.sh start all
第三个all的参数也可以是单独一个jar包名
3.停止命令
start_jar.sh stop all
第三个all的参数也可以是单独一个jar包名