当前位置:   article > 正文

手动部署java jar包_$(basename $jar .jar)

$(basename $jar .jar)

出现的问题

项目开发或者部署过程中,开发人员总是因为启动命令的错误,导致启动参数不对,或者环境不对的情况,根据此种情况,作者编写了一个通用的脚本命令
  • 1

使用说明

部署目录结构(必须遵守该结构),如:
#--------IFOX
#----短信服务(sms-service)
#----地区服务(area-service)
#----启动脚本ifox-service-sh

使用步骤

1、copy本脚本到项目部署父目录下,如:IFOX下
2、运行命令 sh ifox-service-sh start|stop|restart all|sms-service|area-service all代表启动该目录下全部的jar包
3、查看日志是启动成功。默认等待10S后执行命令,如需修改请自行修改

注意事项

1、如需修改启动参数,请修改JAVA_OPTS
2、脚本不一定保证正常启动成功,请保证上传jar包能正常运行

脚本内容

#! /bin/sh
#使用说明:
#部署目录结构(必须遵守该结构),如:
#--------IFOX
#----短信服务(sms-service)
#----地区服务(area-service)
#----启动脚本ifox-service-sh
#
#使用步骤:
#1、copy本脚本到项目部署父目录下,如:IFOX下
#2、运行命令 sh ifox-service-sh start|stop|restart all|sms-service|area-service  all代表启动该目录下全部的jar包
#3、查看日志是启动成功。默认等待10S后执行命令,如需修改请自行修改
#
#注意事项
#1、如需修改启动参数,请修改JAVA_OPTS
#2、脚本不一定保证正常启动成功,请保证上传jar包能正常运行


#java虚拟机启动参数
JAVA_OPTS="-Xms256m -Xmx256m -Xmn256m -Xss256k"
#启动失败提示语-缺少启动模块
START_ERROR_COMMAND="第二个参数请输入: all | jar包所在文件夹名称"

#启动服务
start() {
  # jar包路径
  JAR_PATH=$('pwd')
  #时间
  TIME=$(date "+%Y-%m-%d %H:%M:%S")
  #控制是否输入参数并给出提示
  local commandOk=0
  local okCount=0
  #参数:具体的模块名或者all(全部模块)
  local command="$1"
  if [ "$command" == "" ];then
    #参数不合法抛出参数提示
    echo $START_ERROR_COMMAND
	return
  fi
  echo "-------${TIME}--------正在start:${command}"
  #循环处理指定文件下全部的jar
  for JAR in `ls -l ${JAR_PATH}/*/*.jar | awk '{print $9}'`
  do
    #jar包名称
    JAR_NAME=$(basename $JAR)
    #jar包目录
    JAR_DIR=$(dirname $JAR)
    #判断输入的参数是否合法
    if [ "$command" == "all" ] || [[ "$JAR_DIR" == *"$command"* ]];then
      #标记输入参数合法
      commandOk=1
      #启动时间统计初始化
      count=0
      #获取程序运行情况
      PID=`ps -ef |grep $(echo $JAR | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
      if [ -n "$PID" ];then
        #抛出提示
        echo "$JAR_NAME:已经启动,PID=$PID"
      else
        #启动服务
        exec nohup java $JAVA_OPTS -jar $JAR >> $JAR_DIR/catalina.out 2>&1 &
		echo "$JAR_NAME 启动中.................."
		#等待10s
		sleep 10s
        #获取PID
        PID=`ps -ef |grep $(echo $JAR | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
        #自循环判定是否启动
        while [ -z "$PID" ]
        do
          #一定时间内服务未启动抛出错误提示并终止启动程序
          if (($count == 30));then
            #启动失败
            echo "$JAR_NAME:$(expr $count \* 10)秒内未启动,请检查!"
            break
          fi
          #启动过程输出提示,记录启动时间
          count=$(($count+1))
          echo "$JAR_NAME 启动中.................."
          #时间阻断:10s
          sleep 10s
          #获取PID
          PID=`ps -ef |grep $(echo $JAR | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
        done
        #启动成功输出提示并记录启动服务数量
        okCount=$(($okCount+1))
        echo "$JAR_NAME:已经启动成功,PID=$PID"
      fi
    fi
  done
  if(($commandOk == 0));then
    #参数不合法抛出参数提示
    echo $START_ERROR_COMMAND
  else
    #本次脚本运行结束提示启动服务数量
    echo "............本次共启动: $okCount 个服务..........."
	#换行
	echo ""
  fi
}

#停止服务
stop() {
  # jar包路径
  JAR_PATH=$('pwd')
  #时间
  TIME=$(date "+%Y-%m-%d %H:%M:%S")
  #参数:具体的模块名或者all(全部模块)
  local command="$1"
  if [ "$command" == "" ];then
    #参数不合法抛出参数提示
    echo $START_ERROR_COMMAND
	return
  fi
  #控制是否输入参数并给出提示
  local commandOk=0
  #停止服务数量
  local okCount=0
  echo "-------${TIME}------------正在-stop : ${command}"
  #循环系统模块数组
  for JAR in `ls -l ${JAR_PATH}/*/*.jar | awk '{print $9}'`
  do
    #jar包名称
    JAR_NAME=$(basename $JAR)
    #jar包目录
    JAR_DIR=$(dirname $JAR)
    #判断输入的参数是否合法
	if [ "$command" == "all" ] || [[ "$JAR_DIR" == *"$command"* ]];then
      #标记输入参数合法
      commandOk=1
      #获取程序运行情况
      PID=`ps -ef |grep $(echo $JAR | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
      if [ -n "$PID" ];then
        #抛出提示并结束服务
        echo "$JAR_NAME:准备结束,PID=$PID"
        kill -9 $PID
        #获取PID
        PID=`ps -ef |grep $(echo $JAR | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
        #自循环判定是否停止
        while [ -n "$PID" ]
        do
          #时间阻断:3s监测
          sleep 3s
          #获取PID
          PID=`ps -ef |grep $(echo $JAR | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
        done
        #抛出结束提示并记录结束服务数量
        echo "$JAR_NAME:成功结束"
        okCount=$(($okCount+1))
      else
        #抛出未启动提示
        echo "$JAR_NAME:未运行"
      fi
    fi
  done
  if (($commandOk == 0));then
    #参数不合法抛出参数提示
    echo "第二个参数请输入:当前文件所在同级文件夹名称"
  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
  • 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
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/677211
推荐阅读
相关标签
  

闽ICP备14008679号