Linux下批量启动jar包的shell脚本
Posted zengnansheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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<$#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
以上是关于Linux下批量启动jar包的shell脚本的主要内容,如果未能解决你的问题,请参考以下文章
使用 linux shell脚本启动jar包,进行关闭,查看状态