#!/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"
待改进:判断和循环重复出现,可改为函数调用。