shell脚本如何启动springboot项目

Jamina ·
更新时间:2024-09-20
· 1337 次阅读

目录

shell脚本启动springboot项目

Spring Boot项目启动

springboot项目linux简单的启动、停止、更新脚本sh

1.启动脚本

2.停止脚本

3.版本升级脚本

4、回滚脚本

5.远程发布脚本(前提配置免密登录)

总结

shell脚本启动springboot项目 Spring Boot项目启动

我们知道打包好的Spring Boot项目这样启动

java -jar -Dfile.encoding=utf-8 test-0.0.1-SNAPSHOT.jar

在linux中,常常使用nohup后台启动其他程序,Spring Boot项目使用nohup启动如下

nohup java -jar -Dfile.encoding=utf-8 test-0.0.1-SNAPSHOT.jar &

如果使用上面命令启动,注意这时候远程terminal要主动exit退出,不这样做系统可能会杀掉上面启动的进程

由于开发需要,需要频繁地更新项目,写了两个shell脚本启动和关闭项目

启动项目脚本 start.sh

#!/bin/bash cd project # ccd2002-0.0.1-SNAPSHOT.jar所在目录 nohup java -Xms128m -Xmx256m -jar -Dfile.encoding=utf-8 ccd2002-0.0.1-SNAPSHOT.jar &

关闭项目脚本

#!/bin/bash sudo kill $(ps -aux | grep 'ccd2002' | awk 'NR==2{print $2}')

上面脚本使用ps命令查到ccd2002项目的信息,然后使用awk过滤信息获取项目pid,最后使用kill杀掉项目。

为了方便大家理解,下面分解

sudo kill $(ps -aux | grep 'ccd2002' | awk 'NR==2{print $2}') ps -aux | grep 'ccd2002'

命令执行结果截图如下

ps -aux | grep 'test' | awk 'NR==2{print $2}'

命令取出上图中指出的pid

awk命令对ps结果进行处理,awk 'NR==2{print $2}'中的NR=2表示ps结果的第二行,$2表示行中的第二个元素

springboot项目linux简单的启动、停止、更新脚本sh 1.启动脚本 #!/bin/bash #获取路径 basepath=$(cd $(dirname $0); pwd) echo  "xxxxxx  启动开始............." nohup java -jar  $basepath/xxxxxx.jar  --spring.profiles.active=prd >/dev/null 2>&1& echo  "xxxxxx  启动成功............." 2.停止脚本 #!/bin/bash echo "xxxxxx    停止开始......." ID=`ps -ef | grep "xxxxxx.jar" | grep -v "grep" | awk '{print $2}'` echo $ID for id in $ID do kill -9 $id echo "killed $id" done sleep 5s echo "xxxxxx    停止成功......." 3.版本升级脚本 #!/bin/bash basepath=$(cd $(dirname $0); pwd) echo "############################执行update.sh开始###########################" echo "基础路径:$basepath" echo "远程传递参数为:" ${1} if [ -z ${1} ];then  echo "工程名称参数传递为空,更新失败" else if [ -f "$basepath/../../deploy/${1}.jar" ];then         echo "开始备份工程包"         cp $basepath/${1}.jar  $basepath/../appBak/${1}.jar_$(date '+%Y-%m-%d-%H:%M:%S')         echo "工程包备份成功"         #停止应用             sh $basepath/stop.sh         #开始删除老的工程包         if [ -f "$basepath/${1}.jar" ];then         rm $basepath/${1}.jar         fi         echo "开始更新工程包"      mv $basepath/../../deploy/${1}.jar $basepath/${1}.jar        if [ $? -eq 0 ];then         #启动应用         sh $basepath/start.sh         else           echo "工程包移动失败"         fi else  echo "升级包不存在" fi fi echo "############################执行update.sh结束###########################" 4、回滚脚本 #!/bin/bash basepath=$(cd $(dirname $0); pwd) echo "基础路径:$basepath" packageName=$(cd ${basepath}'/../appBak'; ls -lrlt |grep $(date '+%Y-%m-%d') |head -n 1 |awk '{print $9}' ) echo "获取回滚包名称为:"$packageName if [ -z $packageName ];then    echo "回滚 "$1" 包不存在,回滚失败" else echo "远程传递参数为:"${1} if [ -z ${1} ];then echo "工程名称参数为空,回滚失败" else #将备份包还原在启动 cp $basepath/../appBak/$packageName $basepath/../../deploy/${1}.jar if [ -f "$basepath/../../deploy/"${1}".jar" ];then         #停止应用             sh $basepath/stop.sh         if [ -f "$basepath/"${1}".jar" ];then         #开始删除老的工程包         rm $basepath/${1}.jar         fi         mv $basepath/../../deploy/${1}.jar $basepath/${1}.jar         if [ $? -eq 0 ];then          echo "回滚还原包成功"         #启动应用         sh $basepath/start.sh         else           echo  "工程包还原失败"         fi else  echo "还原包不存在" fi fi fi 5.远程发布脚本(前提配置免密登录) #!/bin/bash echo "******************************远程发布脚本***********************************************************" echo " " echo "********脚本参数 工程名称:支持 ddp-server、ddp-server-idxs、ddp-server-mdxs、ddp-server-ext、********" echo "********ddp-server-task、dmsp-gateway 脚本类型:支持 update(更新脚本)/rollbak(回滚脚本)***************" echo "*******将上述工程名对应的jar包放在 /opt/apps/deploy目录下********************************************" echo "********在config.properties配置文件中,配置工程对应的服务器IP多台机器则以逗号(,)分隔。***************" echo "********如 ddp-server=192.168.1.2,192.178.3.4 的形式配置工程对应的机器*******************************" echo "*************执行脚本的方式如 sh deploy.sh ddp-server update 升级**********************************" echo "*************执行脚本的方式如 sh deploy.sh ddp-server rollbak 回滚**********************************" echo " " echo "******************************远程发布脚本***********************************************************" echo " " echo "##############################开始校检参数############################################################" if [ -z $1 ]||[ -z $2 ];then echo " " echo '参数不能为空,如: sh deploy.sh ddp-server update' echo "" echo "##############################参数校检失败############################################################" else echo " " echo "##############################参数校检成功############################################################" echo " " echo "#############################开始校检配置文件#########################################################" echo " " path="/opt/apps/deploy" echo "远程发布包的路径为:" $path shellpath="" if [ $1 == "ddp-server" ];then shellpath="/opt/apps/ddp/app" elif [ $1 == "ddp-server-idxs" ];then shellpath="/opt/apps/ddp-idxs/app" elif [ $1 == "ddp-server-mdxs" ]; then shellpath="/opt/apps/ddp-mdxs/app" elif [ $1 == "ddp-server-ext" ]; then shellpath="/opt/apps/ddp-ext/app" elif [ $1 == "ddp-server-task" ];then shellpath="/opt/apps/ddp-task/app" elif [ $1 == "dmsp-gateway" ];then shellpath="/opt/apps/dmsp-gateway/app" fi echo "远程脚本路径为:"$shellpath #工程模块名称 modle=$(cat config.properties |grep $1"=" |awk -F '=' '{print $1}') echo "工程名称为:"$modle ips=$(cat config.properties |grep $1"="|awk -F '=' '{print $2}') echo 目标ip为:$ips echo " " if [ -z $modle ];then echo "###########工程在配置文件(config.properties)中不存在,脚本执行终止#####################################" elif [ -z $ips ]; then echo "#############工程对应的目标机器ip在配置文件(config.properties)中不存在,脚本执行终止##################" elif [ -z $shellpath ];then echo "############################"$1"不支持远程操作,脚本执行终止##########################################" elif [ $2 != 'update' ] && [ $2 != 'rollbak' ];then echo "############################远程操作仅支持 update 或 rollbak,脚本执行终止############################" else echo "###################配置文件校检通过,开始更新或回滚操作###############################################" OLD_IFS="$IFS" IFS="," #如下会自动分隔 arr=($ips) #恢复原来的分隔符 IFS="$OLD_IFS" #遍历数组 for ip in ${arr[@]} do if [ $2 == 'update' ];then echo " " echo "=====================================================================================================" echo "++++++++++++++++++++++++++++++++++++"${ip}"开始执行更新操作++++++++++++++++++++++++++++++++" echo " " echo "开始远程拷贝文件" ${modle}".jar 到机器ip为: "${ip} ${path}"的目录下" scp -o ConnectTimeout=10 ${path}/${modle}.jar phfund@${ip}:${path} if [ $? -ne 0 ];then echo "远程拷贝"${modle}".jar 到 " ${ip} " 失败,本次更新失败" echo " " echo "======================================================================================================" else echo "远程拷贝" ${modle}".jar到" $ip "成功" ssh -o ConnectTimeout=10 ${ip} ' sh ' $shellpath'/'$2'.sh ' $1 if [ $? -eq 0 ];then echo " " echo "+++++++++++++++++++++++++++++++++++++++++++++"${ip}"更新成功+++++++++++++++++++++++++++" echo "=================================================================================================" else echo " " echo "+++++++++++++++++++++++++++++++++++++++++++++"${ip}"更新失败++++++++++++++++++++++++++" echo "================================================================================================" fi fi elif [ $2=='rollbak' ];then echo " " echo "===================================================================================================" echo "+++++++++++++++++++++++++++++++++++++++++++++++++++"${ip}"开始执行回滚操作++++++++++++++" echo " " ssh -o ConnectTimeout=10 ${ip} ' sh '${shellpath}'/'$2'.sh ' $1 if [ $? -ne 0 ];then echo " " echo "+++++++++++++++++++++++++++++++++++++++++++++++"${ip}"回滚操作失败++++++++++++++++++++" echo "===============================================================================================" else echo " " echo "+++++++++++++++++++++++++++++++++++++++++++++"${ip}"回滚操作成功++++++++++++++++++++++" echo "===============================================================================================" fi fi done fi fi #+++++++++++++++++脚本说明++++++++++++++++++++++++++++++ echo "******************************远程发布脚本说明***********************************************************************" echo " " echo "******************************脚本参数*******************************************************************************" echo "**参数1 工程名称:支持 ddp-server、ddp-server-idxs、ddp-server-mdxs、ddp-server-extddp-server-task、dmsp-gateway ...**" echo "**参数2 配置属性中对应工程的标识:支持 1,2,3...,当为 all 的时候取全部[1,2,3...]所对应的属性**************************" echo "**参数3 执行的的脚本:支持 update(版本升级),rollbak(版本回滚),log(查看版本日志),start(启动),stop(停止),restart(重启)**" echo "******************************脚本参数*******************************************************************************" echo " " echo "******************************升级版本的工程包放在 /opt/apps/deploy目录下********************************************" echo "******************************在/opt/apps/ssh/config.properties配置文件中配置属性************************************" echo "******************************工程ip如: ddp-server.1=ip**************************************************************" echo "******************************工程日志路径如: ddp-server.logPath=/opt/apps/ddp/log/**********************************" echo "******************************工程执行脚本路径如: ddp-server.shellPath=/opt/apps/ddp/app/****************************" echo " " echo "*******************************执行方式(deploy.sh 参数1 参数2 参数3)*************************************************" echo "*************执行脚本的方式如 deploy.sh ddp-server all update 升级所有的工程***************************************" echo "*************执行脚本的方式如 deploy.sh ddp-server all rollbak 回滚所有的工程***************************************" echo "*************执行脚本的方式如 deploy.sh ddp-server all stop 停止所有的工程***************************************" echo "*************执行脚本的方式如 deploy.sh ddp-server all start 启动所有的工程***************************************" echo "*************执行脚本的方式如 deploy.sh ddp-server all restart 重启所有的工程***************************************" echo " " echo "*************日志查看不支持all,只能够单独选择某一台日志查看**********************************************************" echo "**************执行脚本的方式如 deploy.sh ddp-server 1 log 查看某台机器的工程日志*************************************" echo " " echo "******************************远程发布脚本说明***********************************************************************" echo " " #+++++++++++++++++脚本说明++++++++++++++++++++++++++++++ #+++++++++++++++++参数定义部分++++++++++++++++++++++++++ #参数一表示 工程名称 param1=$1 #参数二表示 配置文件中对应的属性,规则 1,2,3 分别取对应的参数,当为 all的时候取全部[1,2,3]的属性 param2=$2 #参数三表示 执行的的脚本支持update(版本升级),rollbak(版本回滚),log(查看版本日志),start(启动),stop(停止),restart(重启) param3=$3 #工程包名称 packageName=$param1".jar" #升级包路径 updatepath="/opt/apps/deploy" #远程机器用户 userName="phfund" #ip地址 IP="" #日志路径 logPath="" #脚本路径 shellPath="" #config.properties配置文件路径 configPath="/opt/apps/ssh" #+++++++++++++++++参数定义部分++++++++++++++++++++++++++ #+++++++++++++++++传递参数校检以及配置文件解析校检部分++++++++++ echo "**************************************开始校检传入参数*******************************************************************" if [ -z $param1 ]||[ -z $param2 ]||[ -z $param3 ] ;then echo " " echo "参数不能为空如:(deploy.sh 参数1 参数2 参数3) 按照空格分隔" echo " " echo "**************************************传入参数校检失败*******************************************************************" exit fi if [ "$param3" != "update" ]&&[ "$param3" != "restart" ]&&[ "$param3" != "stop" ]&&[ "$param3" != "start" ]&&[ "$param3" != "rollbak" ]&&[ "$param3" != "log" ];then echo " " echo "参数3只支持: update,restart,start,stop,rollbak,log" echo " " echo "**************************************传入参数校检失败*******************************************************************" exit else if [ "$param3" == "log" ]&&[ "$param2" == "all" ];then echo " " echo "查看系统日志只支持单个操作如:(deploy.sh ddp-server 1 log),参数2不支持all" echo " " echo "**************************************传入参数校检失败*******************************************************************" exit fi fi echo " " echo "**************************************传入参数校检成功*******************************************************************" echo " " echo "*****************************************开始解析config.properties配置文件***********************************************" echo " " if [ "$param2" == "all" ];then IP=$(cd ${configPath}; cat ./config.properties|grep ${param1}'\.'|grep -v ${param1}'\.logPath'|grep -v ${param1}'\.shellPath'|awk -F '=' '{print $2}') else IP=$(cd ${configPath};cat ./config.properties|grep ${param1}'\.'${param2}|awk -F '=' '{print $2}') fi echo "获取工程名称为: "$param1 " IP地址: "$IP logPath=$(cd ${configPath}; cat ./config.properties|grep ${param1}'\.logPath'|awk -F '=' '{print $2}') echo "获取工程日志路径为: "$logPath shellPath=$(cd ${configPath}; cat ./config.properties|grep ${param1}'\.shellPath'|awk -F '=' '{print $2}') echo "获取工程执行脚本路径为: "$shellPath echo " " echo "**************************************解析config.properties配置文件结束***********************************************" #+++++++++++++++++传递参数校检以及配置文件解析部分++++++++++ #+++++++++++++++++解析参数验证,以及执行调度部分++++++++++++ echo " " echo "**************************************开始校检解析参数*****************************************************************" if [ -z $IP ];then echo "" echo "获取工程的IP为空,终止程序" echo " " echo "**************************************解析参数校检失败*****************************************************************" exit fi if [ -z $shellPath ];then echo "" echo "获取工程的执行脚本路径为空,终止程序" echo " " echo "**************************************解析参数校检失败*****************************************************************" exit fi if [ "$param3" == "log" ]&&[ -z $logPath ];then echo "" echo "查看日志,获取工程的日志路径为空,终止程序" echo " " echo "**************************************解析参数校检失败*****************************************************************" exit fi echo " " echo "**************************************解析参数校检成功*****************************************************************" #调度公共方法 function remotecall(){ ssh -o ConnectTimeout=10 ${ip} 'sh ' $shellPath'/'$param3'.sh ' $param1 } #查看日志方法 function looklog(){ ssh -o ConnectTimeout=10 ${ip} 'sh ' $shellPath'/'$param3'.sh ' $param1 $logPath } #远程拷贝公共方法 function scpcall(){ scp -o ConnectTimeout=10 ${updatepath}/${packageName} ${userName}@${ip}:${updatepath} } for ip in $IP do if [ $param3 == 'update' ];then echo " " echo "====================================升级(update)操作执行开始===========================================================" echo " " scpcall if [ $? -ne 0 ];then echo "远程拷贝"${packageName}" 到IP为" ${ip} "机器的 "${updatepath}" 目录下失败,本次升级失败" else echo "远程拷贝"${packageName}" 到IP为" $ip "机器的 "${updatepath}" 目录下成功,开始执行更新脚本" echo " " remotecall echo " " if [ $? -ne 0 ];then echo "机器IP为 "$ip "执行更新脚本失败" else echo "机器IP为 "$ip "执行更新脚本成功" fi fi echo " " echo "====================================升级(update)操作执行结束===========================================================" elif [ $param3 == 'start' ];then echo " " echo "====================================启动(start)操作执行开始============================================================" echo " " remotecall if [ $? -ne 0 ];then echo "机器IP为 "$ip "执行启动脚本失败" else echo "机器IP为 "$ip "执行启动脚本成功" fi echo " " echo "====================================启动(start)操作执行结束============================================================" elif [ $param3 == 'rollbak' ];then echo " " echo "===================================回滚(rollbak)操作执行开始============================================================" echo " " remotecall if [ $? -ne 0 ];then echo "机器IP为 "$ip "执行回滚脚本失败" else echo "机器IP为 "$ip "执行回滚脚本成功" fi echo " " echo "====================================回滚(rollbak)操作执行结束============================================================" elif [ $param3 == 'stop' ];then echo " " echo "===================================停止(stop)操作执行开始============================================================" echo " " remotecall if [ $? -ne 0 ];then echo "机器IP为 "$ip "执行停止脚本失败" else echo "机器IP为 "$ip "执行停止脚本成功" fi echo " " echo "====================================停止(stop)操作执行结束============================================================" elif [ $param3 == 'log' ];then echo " " echo "===================================查看日志(log)操作执行开始============================================================" echo " " looklog if [ $? -ne 0 ];then echo "机器IP为 "$ip "执行日志查看脚本失败" else echo "机器IP为 "$ip "执行日志查看脚本成功" fi echo " " echo "====================================查看日志(log)操作执行结束============================================================" elif [ $param3 == 'restart' ];then echo " " echo "======================================重启(restart)操作执行开始==========================================================" echo " " remotecall if [ $? -ne 0 ];then echo "机器IP为 "$ip "执行重启脚本失败" else echo "机器IP为 "$ip "执行重启脚本成功" fi echo " " echo "=====================================重启(restart)操作执行结束============================================================" fi done #+++++++++++++++++解析参数验证,以及执行调度部分++++++++++++

优化版本入口

#!/bin/bash #+++++++++++++++++脚本说明++++++++++++++++++++++++++++++ help=$1 if [ "${help^^}" == "-HELP" ];then echo "******************************远程发布脚本说明***********************************************************************" echo " " echo "******************************脚本参数*******************************************************************************" echo "**参数1 工程名称:支持 ddp-server、ddp-server-idxs、ddp-server-mdxs、ddp-server-extddp-server-task、dmsp-gateway ...**" echo "**参数2 执行的的脚本:支持 update(版本升级),rollbak(版本回滚),log(查看版本日志),start(启动),stop(停止),restart(重启)**" echo "**参数3 配置属性中对应工程机器的标识:支持 ddp-server1,ddp-server2,ddp-server3...,当为 all 的时候取全部[ddp-server1,*" echo "***************ddp-server2,ddp-server3.]所对应的属性*****************************************************************" echo "******************************脚本参数*******************************************************************************" echo " " echo "******************************升级版本的工程包放在 /opt/apps/deploy目录下********************************************" echo "******************************在/opt/apps/ssh/config.properties配置文件中配置属性************************************" echo "******************************工程ip如: ddp-server.1=ip**************************************************************" echo "******************************工程日志路径如: ddp-server.logPath=/opt/apps/ddp/log/**********************************" echo "******************************工程执行脚本路径如: ddp-server.shellPath=/opt/apps/ddp/app/****************************" echo " " echo "*******************************执行方式(deploy.sh 参数1 参数2 参数3)*************************************************" echo "*************执行脚本的方式如 deploy.sh ddp-server update all 升级所有的工程***************************************" echo "*************执行脚本的方式如 deploy.sh ddp-server rollbak all回滚所有的工程***************************************" echo "*************执行脚本的方式如 deploy.sh ddp-server stop all 停止所有的工程***************************************" echo "*************执行脚本的方式如 deploy.sh ddp-server start all 启动所有的工程***************************************" echo "*************执行脚本的方式如 deploy.sh ddp-server restart all 重启所有的工程***************************************" echo " " echo "*************日志查看不支持all,只能够单独选择某一台日志查看**********************************************************" echo "**************执行脚本的方式如 deploy.sh ddp-server log ddp-server1 查看某台机器的工程日志***************************" echo " " echo "*************脚本对应2个参数的语法,只支持以下语法查询 参数3 支持的个数**********************************************" echo "**************查询某个工程对应的机器的标识如 deploy.sh 参数1 listserver 查看对应的机器参数个数***********************" echo " " echo "******************************远程发布脚本说明***********************************************************************" echo " " exit fi #+++++++++++++++++脚本说明++++++++++++++++++++++++++++++ #+++++++++++++++++参数定义部分++++++++++++++++++++++++++ #参数一表示 工程名称 param1=$1 #参数二表示 配置文件中对应的属性,规则 1,2,3 分别取对应的参数,当为 all的时候取全部[1,2,3]的属性 param2=$2 #参数三表示 执行的的脚本支持update(版本升级),rollbak(版本回滚),log(查看版本日志),start(启动),stop(停止),restart(重启) param3=$3 #工程包名称 packageName=$param1".jar" #升级包路径 updatepath="/opt/apps/deploy" #远程机器用户 userName="phfund" #ip地址 IP="" #日志路径 logPath="" #脚本路径 shellPath="" #config.properties配置文件路径 configPath="/opt/apps/ssh" #+++++++++++++++++参数定义部分++++++++++++++++++++++++++ #+++++++++++++++++传递参数校检以及配置文件解析校检部分++++++++++ if [ -z $param3 ]&&[ -n $param1 ] && [ -n $param2 ];then if [ "${param2^^}" == "LISTSERVER" ];then echo "**************************************获取工程所部署的机器(执行脚本参数3 可选的值)**************************************" list=$(cd ${configPath}; cat ./config.properties|grep "${param1}"[0-9]|awk -F '=' '{print $1}') echo "工程对应机器名称(参数3)可选值:" $list echo "" echo "**************************************获取工程所部署的机器(执行脚本参数3 可选的值)**************************************" exit fi fi echo "**************************************开始校检传入参数*******************************************************************" if [ -z $param1 ]||[ -z $param2 ]||[ -z $param3 ] ;then echo " " echo "参数不能为空如:(deploy.sh 参数1 参数2 参数3) 按照空格分隔" echo " " echo "**************************************传入参数校检失败*******************************************************************" exit fi if [ "$param2" != "update" ]&&[ "$param2" != "restart" ]&&[ "$param2" != "stop" ]&&[ "$param2" != "start" ]&&[ "$param2" != "rollbak" ]&&[ "$param2" != "log" ];then echo " " echo "参数2只支持: update,restart,start,stop,rollbak,log" echo " " echo "**************************************传入参数校检失败*******************************************************************" exit else if [ "$param2" == "log" ]&&[ "$param3" == "all" ];then echo " " echo "查看系统日志只支持单个操作如:(deploy.sh ddp-server log ddp-server1),参数3不支持all" echo " " echo "**************************************传入参数校检失败*******************************************************************" exit fi fi echo " " echo "**************************************传入参数校检成功*******************************************************************" echo " " echo "*****************************************开始解析config.properties配置文件***********************************************" echo " " if [ "$param3" == "all" ];then IP=$(cd ${configPath}; cat ./config.properties|grep "${param1}"[0-9]|awk -F '=' '{print $2}') else IP=$(cd ${configPath};cat ./config.properties|grep ${param3}"="|awk -F '=' '{print $2}') fi echo "获取工程名称为: "$param1 " IP地址: "$IP logPath=$(cd ${configPath}; cat ./config.properties|grep ${param1}'\.logPath'|awk -F '=' '{print $2}') echo "获取工程日志路径为: "$logPath shellPath=$(cd ${configPath}; cat ./config.properties|grep ${param1}'\.shellPath'|awk -F '=' '{print $2}') echo "获取工程执行脚本路径为: "$shellPath echo " " echo "**************************************解析config.properties配置文件结束***********************************************" #+++++++++++++++++传递参数校检以及配置文件解析部分++++++++++ #+++++++++++++++++解析参数验证,以及执行调度部分++++++++++++ echo " " echo "**************************************开始校检解析参数*****************************************************************" if [ -z "$IP" ];then echo "" echo "获取工程的IP为空,终止程序" echo " " echo "**************************************解析参数校检失败*****************************************************************" exit fi if [ -z $shellPath ];then echo "" echo "获取工程的执行脚本路径为空,终止程序" echo " " echo "**************************************解析参数校检失败*****************************************************************" exit fi if [ "$param2" == "log" ]&&[ -z $logPath ];then echo "" echo "查看日志,获取工程的日志路径为空,终止程序" echo " " echo "**************************************解析参数校检失败*****************************************************************" exit fi echo " " echo "**************************************解析参数校检成功*****************************************************************" #将变量传递到子脚本 export updatepath export packageName export userName export shellPath export param2 export param1 export logPath for ip in $IP do export ip if [ $param2 == 'update' ];then #执行更新脚本 sh update.sh elif [ $param2 == 'start' ];then #执行启动脚本 sh start.sh elif [ $param2 == 'rollbak' ];then #执行回滚脚本 sh rollbak.sh elif [ $param2 == 'stop' ];then #执行停止脚本 sh stop.sh elif [ $param2 == 'log' ];then #执行日志查看 sh log.sh elif [ $param2 == 'restart' ];then #执行重启脚本 sh restart.sh fi done #+++++++++++++++++解析参数验证,以及执行调度部分++++++++++++ 总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持软件开发网。



springboot shell脚本 shell

需要 登录 后方可回复, 如果你还没有账号请 注册新账号