文档章节

Linux下批量启动jar包的shell脚本

o
 osc_g8254g7s
发布于 2019/08/19 21:58
字数 542
阅读 24
收藏 0

精选30+云产品,助力企业轻松上云!>>>

jar_shell.sh文件内容如下

#! /bin/sh
# 端口号
PORTS=(8761 10000)
# 模块
MODULES=(zns-eureka zns-product)
# 模块名称
MODULE_NAMES=(注册中心 产品模块)
# jar包数组
JARS=(zns-eureka-1.0.0.jar zns-product-1.0.0.jar)
# jar包路径
JAR_PATH='/usr/local/app/jars'
# 日志路径
LOG_PATH='/usr/local/app/logs'
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 -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---$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 "第二个参数输入错误"
  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"
  ;;
  stop)
    stop "$2"
  ;;
  restart)
    stop "$2"
    sleep 3s
    start "$2"
  ;;
  *)
    echo "第一个参数请输入:start|stop|restart"
    exit 1
  ;;
esac

启动所有jar包:sh jar_shell.sh start all 或者./sh start all

停止所有jar包:sh jar_shell.sh stop all 或者./sh stop all

重启所有jar包:sh jar_shell.sh restart all 或者./sh restart all

启动,停止或重启单个jar包,只需要将all替换为相应的模块就行

比如 sh jar_shell.sh start zns-eureka

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
shell通用脚本启动

Linux下shell通用脚本启动jar(微服务) vim app_jar.sh #!/bin/bash source /etc/profile Auth:Liucx Please change these parameters according to your real env. set Java Home: Remem......

osc_6avzl8gm
2019/10/30
2
0
Spring Boot 项目打包 + Shell 脚本部署实践,太有用了!

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell...

云栖号资讯小哥
今天
0
0
springboot打包不同环境配置与shell脚本部署

本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作; profiles指定不同环境的配置 maven-assembly-plugin打发布压缩包 分享shenn...

神牛003
2019/03/09
0
0
springboot打包不同环境配置与shell脚本部署

本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作; profiles指定不同环境的配置 maven-assembly-plugin打发布压缩包 分享shenn...

osc_feymneeg
2019/03/09
1
0
Linux相关

#Linux启动jar并在后台运行(注意不能直接点关闭程序按钮关闭终端,而是需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端) nohup java -jar wphapi.jar ...

城里的月光
2018/09/10
2
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP控制反转和依赖注入

[TOC] PHP和依赖注入 理论知识 作者:Mingqi 链接:https://www.zhihu.com/question/23277575/answer/169698662 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明...

我爱吃炒鸡
30分钟前
14
0
Xcode 6:键盘未显示在模拟器中 - Xcode 6: Keyboard does not show up in simulator

问题: The keyboard does not show up when I run the simulator and click in the UITextView. 当我运行模拟器并单击UITextView时,键盘没有显示。 How do I re-enable the keyboard? 如何......

法国红酒甜
今天
23
0
紫外线消毒灯EPA注册有请小蔡

臭氧消毒器EPA注册,紫外线消毒灯EPA注册,UV水质过滤器EPA注册,UV空气过滤器EPA注册,UV灭蚊灯EPA注册,超声驱虫设备EPA注册,UV消毒器EPA注册,高频驱鸟器EPA注册,电子驱鼠器EPA注册 二、...

IECEE证书注册
今天
11
0
小程序上传帖子(含有文字图片的微信验证)

public.js var graceJS = require('../../utils/grace.js');import { config } from '../../config.js'Page({ /** * 页面的初始数据 */ data: { imglist: [], title:'......

子枫Eric
今天
28
0
如今大火的算法框架TensorFlow,都有哪些值得一看的好书呢?

TensorFlow™是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief 。 Te...

程序员知识码头
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部