linux脚步运行jar,Linux下批量启动jar包的shell脚本

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值