1. 程式人生 > >第一天 自動升級指令碼部署

第一天 自動升級指令碼部署

#!/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"

待改進:判斷和迴圈重複出現,可改為函式呼叫。