Linux一键批量启动、停止、重启Jar包Shell脚本

  • 废话不多说,直接上脚本,我这里是以spring cloud项目做的示例。
#!/bin/sh

export EUREKA=family-eureka-1.0.0.jar
export GATEWAY=family-gateway-1.0.0.jar
export AUTH=family-auth-1.0.0.jar
export SYSTEM=family-system-1.0.0.jar
export FINANCE=familyFinance-1.0.0.jar
export BABY=familyBaby-1.0.0.jar
export HOME=familyHome-1.0.0.jar
export LOG=familyLog-1.0.0.jar

export EUREKA_port=8761
export GATEWAY_port=8762
export AUTH_port=8763
export SYSTEM_port=8764
export FINANCE_port=8765
export BABY_port=8766
export HOME_port=8767
export LOG_port=8768

case "$1" in

start)
        ## 启动EUREKA
        echo "--------EUREKA 开始启动--------------"
        nohup java -jar $EUREKA >/data/project/family/log/family-eureka.out &
        EUREKA_pid=`lsof -i:$EUREKA_port|grep "LISTEN"|awk '{print $2}'`
        until [ -n "$EUREKA_pid" ]
            do
              EUREKA_pid=`lsof -i:$EUREKA_port|grep "LISTEN"|awk '{print $2}'`  
            done
        echo "EUREKA pid is $EUREKA_pid" 
        echo "--------EUREKA 启动成功--------------"
		
		## 启动GATEWAY
        echo "--------开始启动 GATEWAY---------------"
        nohup java -jar $GATEWAY >/data/project/family/log/family-gateway.out &
        GATEWAY_pid=`lsof -i:$GATEWAY_port|grep "LISTEN"|awk '{print $2}'`
        until [ -n "$GATEWAY_pid" ]
            do
              GATEWAY_pid=`lsof -i:$GATEWAY_port|grep "LISTEN"|awk '{print $2}'`  
            done
        echo "GATEWAY pid is $GATEWAY_pid"    
        echo "---------GATEWAY 启动成功-----------"

        ## 启动AUTH
        echo "--------开始启动 AUTH---------------"
        nohup java -jar $AUTH >/data/project/family/log/family-auth.out &
        AUTH_pid=`lsof -i:$AUTH_port|grep "LISTEN"|awk '{print $2}'`
        until [ -n "$AUTH_pid" ]
            do
              AUTH_pid=`lsof -i:$AUTH_port|grep "LISTEN"|awk '{print $2}'`  
            done
        echo "AUTH pid is $AUTH_pid"     
        echo "---------AUTH 启动成功-----------"

        ## 启动SYSTEM
        echo "--------开始启动 SYSTEM---------------"
        nohup java -jar $SYSTEM >/data/project/family/log/family-system.out &
        SYSTEM_pid=`lsof -i:$SYSTEM_port|grep "LISTEN"|awk '{print $2}'` 
        until [ -n "$SYSTEM_pid" ]
            do
              SYSTEM_pid=`lsof -i:$SYSTEM_port|grep "LISTEN"|awk '{print $2}'`  
            done
        echo "SYSTEM pid is $SYSTEM_pid"     
        echo "---------SYSTEM 启动成功-----------"
		
		## 启动FINANCE
        echo "--------开始启动 FINANCE---------------"
        nohup java -jar $FINANCE >/data/project/family/log/family-finance.out &
        FINANCE_pid=`lsof -i:$FINANCE_port|grep "LISTEN"|awk '{print $2}'` 
        until [ -n "$FINANCE_pid" ]
            do
              FINANCE_pid=`lsof -i:$FINANCE_port|grep "LISTEN"|awk '{print $2}'`  
            done
        echo "FINANCE pid is $FINANCE_pid"     
        echo "---------FINANCE 启动成功-----------"
		
		## 启动BABY
        echo "--------开始启动 BABY---------------"
        nohup java -jar $BABY >/data/project/family/log/family-baby.out &
        BABY_pid=`lsof -i:$BABY_port|grep "LISTEN"|awk '{print $2}'` 
        until [ -n "$BABY_pid" ]
            do
              BABY_pid=`lsof -i:$BABY_port|grep "LISTEN"|awk '{print $2}'`  
            done
        echo "BABY pid is $BABY_pid"     
        echo "---------BABY 启动成功-----------"
		
		## 启动HOME
        echo "--------开始启动 HOME---------------"
        nohup java -jar $HOME >/data/project/family/log/family-home.out &
        HOME_pid=`lsof -i:$HOME_port|grep "LISTEN"|awk '{print $2}'` 
        until [ -n "$HOME_pid" ]
            do
              HOME_pid=`lsof -i:$HOME_port|grep "LISTEN"|awk '{print $2}'`  
            done
        echo "HOME pid is $HOME_pid"     
        echo "---------HOME 启动成功-----------"
		
		## 启动LOG
        echo "--------开始启动 LOG---------------"
        nohup java -jar $LOG >/data/project/family/log/family-log.out &
        LOG_pid=`lsof -i:$LOG_port|grep "LISTEN"|awk '{print $2}'` 
        until [ -n "$LOG_pid" ]
            do
              LOG_pid=`lsof -i:$LOG_port|grep "LISTEN"|awk '{print $2}'`  
            done
        echo "LOG pid is $LOG_pid"     
        echo "---------LOG 启动成功-----------"
		
        echo "===startAll success==="
        ;;

 stop)
        P_ID=`ps -ef | grep -w $EUREKA | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "===EUREKA process not exists or stop success"
        else
            kill -9 $P_ID
            echo "EUREKA killed success"
        fi
		
		P_ID=`ps -ef | grep -w $GATEWAY | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "===GATEWAY process not exists or stop success"
        else
            kill -9 $P_ID
            echo "GATEWAY killed success"
        fi
		
		P_ID=`ps -ef | grep -w $AUTH | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "===AUTH process not exists or stop success"
        else
            kill -9 $P_ID
            echo "AUTH killed success"
        fi
		
		P_ID=`ps -ef | grep -w $SYSTEM | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "===SYSTEM process not exists or stop success"
        else
            kill -9 $P_ID
            echo "SYSTEM killed success"
        fi
		
		P_ID=`ps -ef | grep -w $FINANCE | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "===FINANCE process not exists or stop success"
        else
            kill -9 $P_ID
            echo "FINANCE killed success"
        fi
		
		P_ID=`ps -ef | grep -w $BABY | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "===BABY process not exists or stop success"
        else
            kill -9 $P_ID
            echo "BABY killed success"
        fi
		
		P_ID=`ps -ef | grep -w $HOME | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "===HOME process not exists or stop success"
        else
            kill -9 $P_ID
            echo "HOME killed success"
        fi
		
		P_ID=`ps -ef | grep -w $LOG | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "===LOG process not exists or stop success"
        else
            kill -9 $P_ID
            echo "LOG killed success"
        fi

        echo "===stop success==="
        ;;   

restart)
        $0 stop
        sleep 2
        $0 start
        echo "===restart success==="
        ;;   
esac	
exit 0
  • 将以上脚本保存到文本,命名为shellTest.sh,内容可根据你的业务需求自行改造。
  • 我这里给一个我在服务器上的文件夹设置。

  • log是存放输入控制台打印的内容的,如果不想占用磁盘空间,不输入日志,可以修改脚本中的“/data/project/family/log/family-eureka.out” 改成 “/dev/null 2>&1”
  • 这里需要注意一个问题,将shellTest放到服务器上后,别急着启动,需要先做一步解决编码问题,不然启动会报“syntax error near unexpected token `in”

  • 输入以上命令后,就会生成新的脚本文件family.sh,此时可以去启动family.sh了。

  • 好了,到这里我们可以看到,项目已经全部启动了,并且控制台打印的信息也都输出到我指定的log文件夹中。
  • 补充:操作脚本的命令
  • 启动:sh family.sh strat
  • 停止:sh family.sh stop
  • 重新:sh family.sh restart
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值