SpringBoot-批量启动jar包脚本
#! /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=(8000 8888 8890 8886 8887 8889) # 系统模块 MODULES=(AdminApplication BuyerApiApplication CommonApiApplication ConsumerApplication ManagerApiApplication StoreApiApplication) # 系统模块名称 MODULE_NAMES=(springbootAdmin 买家api 公共api 会员api 管理员api 商家api) # jar包数组 JARS=(admin-4.2.5.jar buyer-api-4.2.5.jar common-api-4.2.5.jar consumer-4.2.5.jar manager-api-4.2.5.jar seller-api-4.2.5.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 -Xmx256m -Xms128m -Xss256k -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
分类:
开发技巧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2021-12-09 Mavne安装本地jar到mavne本地maven仓库