第一天 自动升级脚本部署

#!/bin/bash

#判断是否有备份文件夹,没有自动创建

for ((a = 1;a <=3; a++))
 do
  if [ ! -d "/home/rollback" ];then
    mkdir /home/rollback
    echo "create rollback folder"
    continue
    else
    echo "rollback already exists"
    break
    fi
  done


if [ ! -d "/home/rollback" ];then
 echo "The rollback folder cannot be created"
 echo "NOW OUT update xxxx SHELL"
 exit
 fi


for ((b = 1 ;b <= 3 ;b++))
do
rm -rf /home/rollback/*
break
done

#判断并清空备份文件夹

if [  -d "/home/rollback/xxxx" ];then
 echo "The rollback/xxxx folder is not empty"
 echo "NOW OUT update xxxx SHELL"
 exit
fi


if [  -f "/home/rollback/xxxx.tar" ];then
 echo "/home/rollback/xxxx.tar already exists "
 echo "NOW OUT update xxxx SHELL"
 exit
fi


for ((d=1;d<=1;d++))
do

#正式升级过程,将原文件移动到备份文件夹,以备回滚版本
if [ ! -d "/home/rollback/xxxx" ];then
 mv /home/xxxx* /home/rollback/
 break
 fi
 done

#判断移动过程是否准确

 if [ ! -d "/home/rollback/xxxx" ];then
 
   if [ ! -d "/home/xxxx" ];then
    echo "using xxxx is lost"
    echo "NOW OUT update xxxx SHELL"
    exit
    else
    echo "/home/xxxx can not move to /home/rollback/"
    echo "NOW OUT update xxxx SHELL"
    exit
   fi
 fi

#判断是否有待升级工程文件

for ((e=1;e<=3;e++))
do
if [ ! -d /home/backup1/xxxx ];then
 /home/getxxxx.sh
 break
 fi
done

#移动新版本到指定项目路径

if [ -d /home/backup1/xxxx ];then 
 echo "Get ready to start upgrading "
 else
 echo "The xxxx package does not exist before upgrading "
    echo "NOW OUT update xxxx SHELL"
    exit
 fi

#循环杀死程序,直到杀死程序或停止升级

for ((f=1;f<=3;f++))
 do
 ########################################################
  num=`ps -ef |grep java|grep -v "grep"|grep -v "tomcat6.0.29_1"|awk '{print $2}'`
 ########################################################
  if [ ! -n "$num" ];then
    kill -9 $num
   else
    echo "The xxxx process has been killed"
    break
  fi
done


if [ ! -n "$num" ];then
 echo "The xxxx process cannot be killed "
 echo "NOW OUT update xxxx SHELL"
 exit
fi

#判断是否新版本工程文件已在制定路径

for ((g=1;g<=3;g++))
 do
  if [ ! -d /home/xxxx ];then
   mv /home/backup1/* /home/
   else
   echo "The upgrade pack is ready ..."
   break
   fi
  done
 if [ ! -d /home/xxxx ];then
   echo "New upgrade pack has been lost"
   echo "NOW OUT update xxxx SHELL"
   exit
   fi

#清缓存

for ((h=1;h<=3;h++))
 do
 ################################################
  if [  -d $CATALINA_HOME/work/Catalina ];then
   cd $CATALINA_HOME/work/
#################################################
   rm -rf Catalina
   else
   echo "Cache cleared"
   break
   fi
  done
##############################################
 if [  -d $CATALINA_HOME/work/Catalina ];then
 #############################################
   echo "Catalina can not remove"
   echo "NOW OUT update xxxx SHELL"
   exit
   fi
#########################################

#重新启动服务

startup.sh
########################################
 sleep 20
 ########################################################
 num=`ps -ef |grep java|grep -v "grep"|grep -v "tomcat6.0.29_1"|awk '{print $2}'`
 ########################################################

#判断是否重启成功

 if [  -n "$num" ];then
   echo " The xxxx program is start "
   else
   echo "The xxxx program is not start"
   echo " MOW OUT xxxx update SHELL"
   break
  fi

#升级完成
echo "The xxxx program has been successfully upgraded"

待改进:判断和循环重复出现,可改为函数调用。

猜你喜欢

转载自blog.csdn.net/ennaguo/article/details/78552185