shell脚本实现单服务器无缝部署

第一次写shell脚本 感觉还不错 这个脚本的主要功能是 以 备用端口启动 主程序 ,然后杀死之前的,再然后 以正常端口启动新程序 然后将备用端口杀死 结合nginx 实现伪无缝部署的功能,以下是 shell脚本的 内容 仅供参考学习shell脚本语言。

 

#!/bin/bash
cd /park2/
#定义 备用端口号
spareProt=8011
#定义等待时间
waitSec=20
#定义无牌车 备用端口号
nocarPort=8089
echo "请输入正在运行的jar包版本号(如parking-4.1.1.jar,请输入4.1.1)"
read oldJar
echo "请输入想要运行的jar包版本号(如parking-4.1.2.jar,请输入4.1.2)"
read newJar
#获取之前版本的PID 避免 启动新的之后存在冲突
oldPID=$(ps -ef|grep parking-$oldJar.jar|grep -v "grep"|awk '{print$2}')
if [ $? -eq 0 ]
then
    echo "当前运行版本的PID为:"$oldPID";"
    if [ x$oldPID = "x" ] 
    then
        echo "未查询到正在运行版本的PID,当前版本号为:"$oldJar"请检查"
        echo "是否结束脚本?(Y/N)"
        read isEnd
        if [ $isEnd = "Y" -o $isEnd = "y" ]
        then
            echo "脚本已结束,感谢使用!"
            exit
        else
            echo "请输入需要杀死的进程的PID:"
            read myPID
            oldPID=$myPID
        fi
    fi
else
    echo "脚本获取PID出错,脚本结束"
    exit
fi
#以备用端口启动新上传的jar包
nohup java -jar parking-$newJar.jar --server.port=$spareProt --nocar.port=$nocarPort &
#判断 新java包是否启动正确
if [ $? -eq 0 ]
then
    echo "新版本以"$spareProt"为端口,正常启动,脚本将等待"$waitSec"s..."
    sleep $waitSec
else
    echo "新版本以"$spareProt"为端口,启动异常,请检查程序是否存在错误,脚本结束"
    exit
fi
#杀死 旧进程
kill -9 $oldPID
if [ $? -eq 0 ]
then
    echo "旧进程PID:"$oldPID"已被杀死"
else
    echo "旧进程PID:"$oldPID"杀死异常,请手动处理,脚本结束"
    exit
fi
#获取新版本的PID 
newPID=$(ps -ef|grep parking-$newJar.jar|grep -v "grep"|awk '{print$2}')
if [ $? -eq 0 ]
then
    echo "当前运行版本"$newJar"的PID为:"$newPID";"
    if [ x$oldPID = "x" ] 
    then
        echo "脚本未获得新版本的PID,请检查脚本逻辑是否错误,脚本结束!"
        exit
    fi
else
    echo "脚本获取新版本PID出错,脚本结束"
    exit
fi
#以正常端口启动新上传的jar包
nohup java -jar parking-$newJar.jar &
#判断 新java包是否启动正确
if [ $? -eq 0 ]
then
    echo "新版本以源端口,正常启动,脚本将等待"$waitSec"s..."
    sleep $waitSec
else
    echo "新版本以源端口,启动异常,请检查程序是否存在错误,脚本结束"
    exit
fi
#杀死 备用端口启动的新进程
kill -9 $newPID
if [ $? -eq 0 ]
then
    echo "脚本执行成功,感谢使用!"
else
    echo "杀死备用端口进程错误,请检查脚本,或手动处理"
    exit
fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值