Centos8一键启动多个Springboot jar包

Centos8一键启动多个Springboot jar包,第1张

Centos8一键启动多个Springboot jar包

首先在jar包同目录下(假设为/app)创建启动文件

#创建shell文件
touch start.sh

进入编辑模式

#编辑内容
vim start.sh

然后把下面内容复制到文件里面保存

#! /bin/bash
# 模块,注意要与启动的jar包数量相同
MODULES=(gateway auth)
# jar包数组
JARS=(gateway-1.0.jar auth-1.0.jar)
# jar包路径
JAR_PATH='/app'
# 日志路径
LOG_PATH='/app/logs'
start() {
  local MODULE=
  local JAR_NAME=
  local command="$1"
  local commandOk=0
  local count=0
  local ok=0
  #循环遍历
  for((i=0;i<${#MODULES[@]};i++))
  do
    MODULE=${MODULES[$i]}
    JAR_NAME=${JARS[$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 }'`
      if [ -n "$PID" ];then
        echo "$MODULE:已经运行,PID=$PID"
      else
        exec nohup java -Xms256m -Xmx512m -jar $JAR_PATH/$JAR_NAME >> $LOG_PATH/$MODULE.log 2>&1 &
        PID=`ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
        while [ -z "$PID" ]
        do
          if (($count == 30));then
            echo "$MODULE:$(expr $count * 10)秒内未启动,请检查!"
            break
          fi
          count=$(($count+1))
          echo "$MODULE启动中.................."
          sleep 10s
          PID=`ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
        done
        ok=$(($ok+1))
        echo "$MODULE:启动成功,PID=$PID"
      fi
    fi
  done
  if(($commandOk == 0));then
    echo "第二个参数输入错误"
  else
    echo "............本次共启动:$ok个服务..........."
  fi
}
 
stop() {
  local MODULE=
  local JAR_NAME=
  local command="$1"
  local commandOk=0
  local ok=0
  for((i=0;i<${#MODULES[@]};i++))
  do
    MODULE=${MODULES[$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 }'`
      if [ -n "$PID" ];then
        echo "$MODULE:准备结束,PID=$PID"
        kill -9 $PID
        PID=`ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print }'`
        while [ -n "$PID" ]
        do
          sleep 3s
          PID=`ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print }'`
        done
        echo "$MODULE:成功结束"
        ok=$(($ok+1))
      else
        echo "$MODULE:未运行"
      fi
    fi
  done
  if (($commandOk == 0));then
    echo "第二个参数输入错误"
  else
    echo "............本次共停止:$ok个服务............"
  fi
}
 
 
case "" in
  start)
    start ""
  ;;
  stop)
    stop ""
  ;;
  restart)
    stop ""
    sleep 3s
    start ""
  ;;
  *)
    echo "第一个参数请输入:start|stop|restart"
    exit 1
  ;;
esac

保存

:wq

增加运行权限

chmod 755 start.sh

运行命令如下:

#启动、关闭、重启所有jar包
./start.sh start all
./start.sh stop all
./start.sh restart all
#启动、关闭、重启单个jar包
./start.sh start gateway 或 auth
./start.sh stop gateway 或 auth
./start.sh restart gateway 或 auth

如果运行出现下面异常
找不到 #! /bin/bash^M文件
是由于在Windows的换行符在Linux下面不兼容问题,可参考下面方法

vi start.sh

#可以看当前格式,dos或者unix
:set ff?

#将文件强转为unix即可
:set ff=unix

参考:
https://blog.csdn.net/github_38924695/article/details/105165999
https://www.cnblogs.com/toughcactus/p/15018746.html

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5707276.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存