文章详情页
shell脚本如何启动springboot项目
目录shell脚本启动springboot项目Spring Boot项目启动springboot项目linux简单的启动、停止、更新脚本sh1.启动脚本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/bashcd project # ccd2002-0.0.1-SNAPSHOT.jar所在目录nohup java -Xms128m -Xmx256m -jar -Dfile.encoding=utf-8 ccd2002-0.0.1-SNAPSHOT.jar &关闭项目脚本#!/bin/bashsudo 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简单的启动、停止、更新脚本sh1.启动脚本#!/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/bashecho 'xxxxxx 停止开始.......'ID=`ps -ef | grep 'xxxxxx.jar' | grep -v 'grep' | awk '{print $2}'`echo $IDfor id in $IDdokill -9 $idecho 'killed $id'donesleep 5secho 'xxxxxx 停止成功.......'3.版本升级脚本#!/bin/bashbasepath=$(cd $(dirname $0); pwd)echo '############################执行update.sh开始###########################'echo '基础路径:$basepath'echo '远程传递参数为:' ${1}if [ -z ${1} ];then echo '工程名称参数传递为空,更新失败'elseif [ -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 '工程包移动失败' fielse echo '升级包不存在'fifiecho '############################执行update.sh结束###########################'4、回滚脚本#!/bin/bashbasepath=$(cd $(dirname $0); pwd)echo '基础路径:$basepath'packageName=$(cd ${basepath}'/../appBak'; ls -lrlt |grep $(date '+%Y-%m-%d') |head -n 1 |awk '{print $9}' )echo '获取回滚包名称为:'$packageNameif [ -z $packageName ];then echo '回滚 '$1' 包不存在,回滚失败'elseecho '远程传递参数为:'${1}if [ -z ${1} ];thenecho '工程名称参数为空,回滚失败'else#将备份包还原在启动cp $basepath/../appBak/$packageName $basepath/../../deploy/${1}.jarif [ -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 '工程包还原失败' fielse echo '还原包不存在'fififi5.远程发布脚本(前提配置免密登录)#!/bin/bashecho '******************************远程发布脚本***********************************************************'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 ];thenecho ' 'echo '参数不能为空,如: sh deploy.sh ddp-server update'echo ''echo '##############################参数校检失败############################################################'elseecho ' 'echo '##############################参数校检成功############################################################'echo ' 'echo '#############################开始校检配置文件#########################################################'echo ' 'path='/opt/apps/deploy'echo '远程发布包的路径为:' $pathshellpath=''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 '工程名称为:'$modleips=$(cat config.properties |grep $1'='|awk -F '=' '{print $2}')echo 目标ip为:$ipsecho ' 'if [ -z $modle ];thenecho '###########工程在配置文件(config.properties)中不存在,脚本执行终止#####################################'elif [ -z $ips ]; thenecho '#############工程对应的目标机器ip在配置文件(config.properties)中不存在,脚本执行终止##################'elif [ -z $shellpath ];thenecho '############################'$1'不支持远程操作,脚本执行终止##########################################'elif [ $2 != 'update' ] && [ $2 != 'rollbak' ];thenecho '############################远程操作仅支持 update 或 rollbak,脚本执行终止############################'elseecho '###################配置文件校检通过,开始更新或回滚操作###############################################'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 fielif [ $2=='rollbak' ];then echo ' ' echo '==================================================================================================='echo '+++++++++++++++++++++++++++++++++++++++++++++++++++'${ip}'开始执行回滚操作++++++++++++++' echo ' ' ssh -o ConnectTimeout=10 ${ip} ' sh '${shellpath}'/'$2'.sh ' $1 if [ $? -ne 0 ];thenecho ' 'echo '+++++++++++++++++++++++++++++++++++++++++++++++'${ip}'回滚操作失败++++++++++++++++++++' echo '===============================================================================================' elseecho ' 'echo '+++++++++++++++++++++++++++++++++++++++++++++'${ip}'回滚操作成功++++++++++++++++++++++' echo '==============================================================================================='fifidonefifi#+++++++++++++++++脚本说明++++++++++++++++++++++++++++++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 ] ;thenecho ' ' echo '参数不能为空如:(deploy.sh 参数1 参数2 参数3) 按照空格分隔'echo ' 'echo '**************************************传入参数校检失败*******************************************************************'exitfiif [ '$param3' != 'update' ]&&[ '$param3' != 'restart' ]&&[ '$param3' != 'stop' ]&&[ '$param3' != 'start' ]&&[ '$param3' != 'rollbak' ]&&[ '$param3' != 'log' ];thenecho ' ' echo '参数3只支持: update,restart,start,stop,rollbak,log'echo ' 'echo '**************************************传入参数校检失败*******************************************************************'exitelse if [ '$param3' == 'log' ]&&[ '$param2' == 'all' ];thenecho ' ' echo '查看系统日志只支持单个操作如:(deploy.sh ddp-server 1 log),参数2不支持all'echo ' 'echo '**************************************传入参数校检失败*******************************************************************' exit fifiecho ' '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}') fiecho '获取工程名称为: '$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 '获取工程执行脚本路径为: '$shellPathecho ' 'echo '**************************************解析config.properties配置文件结束***********************************************'#+++++++++++++++++传递参数校检以及配置文件解析部分++++++++++#+++++++++++++++++解析参数验证,以及执行调度部分++++++++++++echo ' 'echo '**************************************开始校检解析参数*****************************************************************'if [ -z $IP ];thenecho ''echo '获取工程的IP为空,终止程序'echo ' 'echo '**************************************解析参数校检失败*****************************************************************'exitfiif [ -z $shellPath ];thenecho ''echo '获取工程的执行脚本路径为空,终止程序'echo ' 'echo '**************************************解析参数校检失败*****************************************************************'exitfiif [ '$param3' == 'log' ]&&[ -z $logPath ];thenecho ''echo '查看日志,获取工程的日志路径为空,终止程序'echo ' 'echo '**************************************解析参数校检失败*****************************************************************'exitfiecho ' '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 $IPdoif [ $param3 == 'update' ];thenecho ' '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 fiecho ' 'echo '====================================升级(update)操作执行结束==========================================================='elif [ $param3 == 'start' ];thenecho ' 'echo '====================================启动(start)操作执行开始============================================================'echo ' 'remotecall if [ $? -ne 0 ];then echo '机器IP为 '$ip '执行启动脚本失败' else echo '机器IP为 '$ip '执行启动脚本成功' fiecho ' 'echo '====================================启动(start)操作执行结束============================================================'elif [ $param3 == 'rollbak' ];thenecho ' 'echo '===================================回滚(rollbak)操作执行开始============================================================'echo ' 'remotecall if [ $? -ne 0 ];then echo '机器IP为 '$ip '执行回滚脚本失败' else echo '机器IP为 '$ip '执行回滚脚本成功' fiecho ' 'echo '====================================回滚(rollbak)操作执行结束============================================================'elif [ $param3 == 'stop' ];thenecho ' 'echo '===================================停止(stop)操作执行开始============================================================'echo ' 'remotecall if [ $? -ne 0 ];then echo '机器IP为 '$ip '执行停止脚本失败' else echo '机器IP为 '$ip '执行停止脚本成功' fiecho ' 'echo '====================================停止(stop)操作执行结束============================================================'elif [ $param3 == 'log' ];thenecho ' 'echo '===================================查看日志(log)操作执行开始============================================================'echo ' ' looklog if [ $? -ne 0 ];then echo '机器IP为 '$ip '执行日志查看脚本失败' else echo '机器IP为 '$ip '执行日志查看脚本成功' fiecho ' 'echo '====================================查看日志(log)操作执行结束============================================================'elif [ $param3 == 'restart' ];thenecho ' 'echo '======================================重启(restart)操作执行开始=========================================================='echo ' 'remotecall if [ $? -ne 0 ];then echo '机器IP为 '$ip '执行重启脚本失败' else echo '机器IP为 '$ip '执行重启脚本成功' fiecho ' 'echo '=====================================重启(restart)操作执行结束============================================================'fidone#+++++++++++++++++解析参数验证,以及执行调度部分++++++++++++优化版本入口
#!/bin/bash#+++++++++++++++++脚本说明++++++++++++++++++++++++++++++help=$1if [ '${help^^}' == '-HELP' ];thenecho '******************************远程发布脚本说明***********************************************************************'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 ' 'exitfi#+++++++++++++++++脚本说明++++++++++++++++++++++++++++++#+++++++++++++++++参数定义部分++++++++++++++++++++++++++#参数一表示 工程名称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 fifiecho '**************************************开始校检传入参数*******************************************************************'if [ -z $param1 ]||[ -z $param2 ]||[ -z $param3 ] ;thenecho ' ' echo '参数不能为空如:(deploy.sh 参数1 参数2 参数3) 按照空格分隔'echo ' 'echo '**************************************传入参数校检失败*******************************************************************'exitfiif [ '$param2' != 'update' ]&&[ '$param2' != 'restart' ]&&[ '$param2' != 'stop' ]&&[ '$param2' != 'start' ]&&[ '$param2' != 'rollbak' ]&&[ '$param2' != 'log' ];thenecho ' ' echo '参数2只支持: update,restart,start,stop,rollbak,log'echo ' 'echo '**************************************传入参数校检失败*******************************************************************'exitelse if [ '$param2' == 'log' ]&&[ '$param3' == 'all' ];thenecho ' ' echo '查看系统日志只支持单个操作如:(deploy.sh ddp-server log ddp-server1),参数3不支持all'echo ' 'echo '**************************************传入参数校检失败*******************************************************************' exit fifiecho ' '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}') fiecho '获取工程名称为: '$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 '获取工程执行脚本路径为: '$shellPathecho ' 'echo '**************************************解析config.properties配置文件结束***********************************************'#+++++++++++++++++传递参数校检以及配置文件解析部分++++++++++#+++++++++++++++++解析参数验证,以及执行调度部分++++++++++++echo ' 'echo '**************************************开始校检解析参数*****************************************************************'if [ -z '$IP' ];thenecho ''echo '获取工程的IP为空,终止程序'echo ' 'echo '**************************************解析参数校检失败*****************************************************************'exitfiif [ -z $shellPath ];thenecho ''echo '获取工程的执行脚本路径为空,终止程序'echo ' 'echo '**************************************解析参数校检失败*****************************************************************'exitfiif [ '$param2' == 'log' ]&&[ -z $logPath ];thenecho ''echo '查看日志,获取工程的日志路径为空,终止程序'echo ' 'echo '**************************************解析参数校检失败*****************************************************************'exitfiecho ' 'echo '**************************************解析参数校检成功*****************************************************************'#将变量传递到子脚本export updatepathexport packageNameexport userNameexport shellPathexport param2export param1export logPathfor ip in $IPdoexport ipif [ $param2 == 'update' ];then#执行更新脚本sh update.shelif [ $param2 == 'start' ];then#执行启动脚本sh start.shelif [ $param2 == 'rollbak' ];then#执行回滚脚本sh rollbak.shelif [ $param2 == 'stop' ];then#执行停止脚本sh stop.shelif [ $param2 == 'log' ];then#执行日志查看sh log.shelif [ $param2 == 'restart' ];then#执行重启脚本sh restart.shfidone#+++++++++++++++++解析参数验证,以及执行调度部分++++++++++++总结以上为个人经验,希望能给大家一个参考,也希望大家多多支持好吧啦网。
标签:
Linux
相关文章:
排行榜