第一天 自動升級指令碼部署
#!/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"
待改進:判斷和迴圈重複出現,可改為函式呼叫。