• Linux部署多个jar包脚本


    前言:
    系统有多个jar包需要更新部署,如果每次都要手动敲java -jar的话,并且还要指定生成环境还是测试环境,这样就显得很麻烦,为此提供一个脚本如下,可根据自己的需求自定义该脚本:

    srmBackApplication.sh

    #! /bin/sh
    # 端口号
    PORTS=(8081 11113 19021 11119 18011 19013 19008 18888 11114 11116 11110 19012 21114 18021)
    # 模块
    MODULES=(isrm-gateway isrm-system isrm-attachment isrm-auth isrm-basic isrm-bid isrm-notice isrm-job isrm-per isrm-pur isrm-report isrm-sup isrm-workflow isrm-contract)
    # 模块名称
    MODULE_NAMES=(网关 系统服务  文件管理  授权管理 基础服务 采购池管理 消息中心 任务调度 供应商评价 采购执行 报表管理 供应商管理 工作流 合同管理)
    # jar包数组
    JARS=(isrm-gateway.jar isrm-system.jar isrm-attachment.jar isrm-auth.jar isrm-basic.jar isrm-bid.jar isrm-notice.jar isrm-job.jar isrm-per.jar isrm-pur.jar isrm-report.jar isrm-sup.jar isrm-workflow.jar isrm-contract.jar)
    # 服务运行内存
    XMX=(256m 256m 256m 256m 256m 512m 256m 256m 512m 512m 512m 256m 256m 512m)
    # jar包路径
    JAR_PATH='/srm/application/back'
    # 日志路径
    LOG_PATH='/srm/application/back/logs'
    start() {
      local MODULE=
      local MODULE_NAME=
      local JAR_NAME=
      local command="$1"
      local commandLog="$2"
      local commandOk=0
      local commandLogOk=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]}
    	XMX=${XMX[$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
    		if [ -n "$commandLog" ];then
    		  if [ "$commandLog" == "log" ];then
    			commandLogOk=1
    			exec nohup java -Xms128m -Xmx$XMX -jar $JAR_PATH/$JAR_NAME  --spring.profiles.active=prod >> $LOG_PATH/$MODULE.log 2>&1 &
    		  else
    		    break
    		  fi
    		else
    		   exec nohup java -Xms128m -Xmx$XMX -jar $JAR_PATH/$JAR_NAME  --spring.profiles.active=prod >> /dev/null 2>&1 &
    		fi
    	    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---$MODULE_NAME:$(expr $count \* 10)秒内未启动,请检查!"
    		    break
    		  fi
    		  count=$(($count+1))
    		  echo "$MODULE_NAME启动中.................."
    		  sleep 10s
    		  PID=`ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
    	    done
    	    okCount=$(($okCount+1))
    	    echo "$MODULE---$MODULE_NAME:已经启动成功,PID=$PID"
          fi
        fi
      done
      if(($commandOk == 0));then
        echo "第二个参数输入错误"
      elif [ -n "$commandLog" ] && (($commandLogOk == 0));then
    	echo "第三个参数输入错误"
      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 "第二个参数输入错误"
      else
        echo "............本次共停止:$okCount个服务............"
      fi
    }
     
     
    case "$1" in
      start)
        start "$2" "$3"
      ;;
      stop)
        stop "$2"
      ;;
      restart)
        stop "$2"
        sleep 3s
        start "$2" "$3"
      ;;
      *)
        echo "第一个参数请输入:start|stop|restart"
        exit 1
      ;;
    esac
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134

    常用命令:

    重启全部:sh srmBackApplication.sh restart all
    重启单个:sh srmBackApplication.sh restart isrm-system(单个服务名)
    停止全部:sh srmBackApplication.sh stop all
    停止单个:sh srmBackApplication.sh stop isrm-system(单个服务名)
    启动全部:sh srmBackApplication.sh start all
    启动单个:sh srmBackApplication.sh start isrm-system(单个服务名)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    第十二章 配置 Apache 以与 Web 网关配合使用 (Windows)
    GBase 8c数据库对象命名
    详细解读-Spring响应处理
    怎样优雅地增删查改(一):从0开始搭建Volo.Abp项目
    Centos - CA 证书服务
    【无标题】
    docker基础命令
    检测Windows安全缺陷工具wesng的学习与使用
    怎么压缩图片不影响清晰度
    Redis事务
  • 原文地址:https://blog.csdn.net/zhouDonQuixote/article/details/136390989