#!/bin/bash
set -x
FILE1=DyhWeb.war
FILE5=DyhWebService.war
FILE2=apacheactivemq.properties
FILE3=config.properties
FILE4=property.properties
DIR1=/usr/local/tomcat-8580/webapps/
DIR2=/usr/local/tomcat-8580/webapps/DyhWeb/WEB-INF/classes
DIR3=/usr/local/tomcat-8580/appBackup/
DATE=`date +%F%H%M`
rm -rf ${DIR1%w*}${FILE1%.*} ${DIR1%w*}${FILE5%.*};mkdir -p ${DIR1%w*}${FILE1%.*} ${DIR1%w*}${FILE5%.*}
if [ -f $FILE1 ] && [ -f $FILE5 ];then
unzip $FILE1 -d ${DIR1%w*}${FILE1%.*} > /dev/null
unzip $FILE5 -d ${DIR5%w*}${FILE5%.*} > /dev/null
mv ${DIR1}${FILE1%.*} ${DIR3}${FILE1%.*}.$DATE && mv ${DIR1%w*}${FILE1%.*} $DIR1
/bin/cp -f ${DIR3}${FILE1%.*}.$DATE/WEB-INF/classes/$FILE2 $DIR2
/bin/cp -f ${DIR3}${FILE1%.*}.$DATE/WEB-INF/classes/$FILE3 $DIR2
/bin/cp -f ${DIR3}${FILE1%.*}.$DATE/WEB-INF/classes/$FILE4 $DIR2
mv ${DIR1}${FILE5%.*} ${DIR3}${FILE5%.*}.$DATE && mv ${DIR1%w*}${FILE5%.*} $DIR1
/bin/cp -f ${DIR3}${FILE5%.*}.$DATE/WEB-INF/$FILE2 $DIR2
/bin/cp -f ${DIR3}${FILE5%.*}.$DATE/WEB-INF/$FILE3 $DIR2
/bin/cp -f ${DIR3}${FILE5%.*}.$DATE/WEB-INF/classes/$FILE4 $DIR2
${DIR1%w*}bin/catalina.sh stop && ps -ef | grep tomcat-8580 | grep -v "grep"
echo $?
if [ $? = 0 ];then
ps -ef | grep tomcat-8580|grep -v "grep" |awk '{print $2}' | xargs -i kill -9 {}
${DIR1%w*}bin/catalina.sh start && tail -f ${DIR1%w*}logs/catalina.out
else
${DIR1%w*}bin/catalina.sh start && tail -f ${DIR1%w*}logs/catalina.out
fi
else
echo "!!!!!!DyhWeb.war和DyhWebService.war同时存在是不成立的!!!!!!"
fi
if [ -f $FILE1 ] && [ ! -f $FILE5 ];then
unzip $FILE1 -d ${DIR1%w*}${FILE1%.*} > /dev/null
mv ${DIR1}${FILE1%.*} ${DIR3}${FILE1%.*}.$DATE && mv ${DIR1%w*}${FILE1%.*} $DIR1
/bin/cp -f ${DIR3}${FILE1%.*}.$DATE/WEB-INF/classes/$FILE2 $DIR2
/bin/cp -f ${DIR3}${FILE1%.*}.$DATE/WEB-INF/classes/$FILE3 $DIR2
/bin/cp -f ${DIR3}${FILE1%.*}.$DATE/WEB-INF/classes/$FILE4 $DIR2
${DIR1%w*}bin/catalina.sh stop && ps -ef | grep tomcat-8580 | grep -v "grep"
echo $?
if [ $? = 0 ];then
ps -ef | grep tomcat-8580|grep -v "grep" |awk '{print $2}' | xargs -i kill -9 {}
${DIR1%w*}bin/catalina.sh start && tail -f ${DIR1%w*}logs/catalina.out
else
${DIR1%w*}bin/catalina.sh start && tail -f ${DIR1%w*}logs/catalina.out
fi
else
echo "!!!!!!DyhWeb.war存在且DyhWebService.war不存在是不成立的!!!!!!"
fi
if [ ! -f $FILE1 ] && [ -f $FILE5 ];then
unzip $FILE5 -d ${DIR5%w*}${FILE5%.*} > /dev/null
mv ${DIR1}${FILE5%.*} ${DIR3}${FILE5%.*}.$DATE && mv ${DIR1%w*}${FILE5%.*} $DIR1
/bin/cp -f ${DIR3}${FILE5%.*}.$DATE/WEB-INF/$FILE2 $DIR2
/bin/cp -f ${DIR3}${FILE5%.*}.$DATE/WEB-INF/$FILE3 $DIR2
/bin/cp -f ${DIR3}${FILE5%.*}.$DATE/WEB-INF/classes/$FILE4 $DIR2
${DIR1%w*}bin/catalina.sh stop && ps -ef | grep tomcat-8580 | grep -v "grep"
echo $?
if [ $? = 0 ];then
ps -ef | grep tomcat-8580|grep -v "grep" |awk '{print $2}' | xargs -i kill -9 {}
${DIR1%w*}bin/catalina.sh start && tail -f ${DIR1%w*}logs/catalina.out
else
${DIR1%w*}bin/catalina.sh start && tail -f ${DIR1%w*}logs/catalina.out
fi
else
echo "!!!!!!DyhWeb.war不存在且DyhWebService.war存在是不成立的!!!!!!"
fi
上面的版本后来发现有很多错误之处,如下:
(1)echo $? ,然后验证$?是否为0,本身是想得到上次执行的输出结果,但是在下面判断时就会导致得到的输出结果为echo $?本身。可以这样做,Result=$?
下面的版本是经过道友点拨后修改的。比较不错。
#!/bin/bash
set -x
#需要的文件及目录
file_DyhWeb=DyhWeb.war
file_DyhWebService=DyhWebService.war
FILE1=apacheactivemq.properties
FILE2=config.properties
FILE3=property.properties
dir_webapps=/usr/local/tomcat-8580/webapps/
dir_DyhWeb=${dir_webapps}DyhWeb/WEB-INF/classes
dir_DyhWebService=${dir_webapps}DyhWebService/WEB-INF/classes
dir_appBackup=/usr/local/tomcat-8580/appBackup/
DATE=`date +%F%H%M`
BACKDIR_DyhWeb=${dir_appBackup}DyhWeb.$DATE
BACKDIR_DyhWebService=${dir_appBackup}DyhWebService.$DATE
rm -rf ${dir_webapps%w*}DyhWeb/* ${dir_webapps%w*}DyhWebService/*
if [ -f $file_DyhWeb ];then
unzip $file_DyhWeb -d ${dir_webapps%w*}DyhWeb > /dev/null
mv ${dir_webapps}DyhWeb ${BACKDIR_DyhWeb} && mv ${dir_webapps%w*}DyhWeb ${dir_webapps}
cd ${BACKDIR_DyhWeb}/WEB-INF/class
/bin/cp -f $FILE1 $FILE2 $FILE3 ${dir_DyhWeb}
fi
if [ -f $file_DyhWebService ];then
unzip $file_DyhWebService -d ${dir_webapps%w*}DyhWebService > /dev/null
mv ${dir_webapps}DyhWebService ${BACKDIR_DyhWebService} && mv ${dir_webapps%w*}DyhWebService ${dir_webapps}
cd ${BACKDIR_DyhWebService}/WEB-INF/
/bin/cp -f $FILE1 $FILE2 ${dir_DyhWebService%c*}
cd ${BACKDIR_DyhWebService}/WEB-INF/classes/
/bin/cp -f $FILE3 ${dir_DyhWebService}
fi
cd ${dir_webapps%w*}bin
./catalina.sh stop && sleep 15
PIDNUM=`ps auxww | grep 'tomcat-8580' | grep -v "grep"|awk '{print $2}'|wc -l`
if [ $PIDNUM == 0 ];then
./catalina.sh start && tail -f ../logs/catalina.out
else
ps auxww | grep 'tomcat-8580' | grep -v "grep"|awk '{print $2}'| xargs -i kill -9 {}
./catalina.sh start && tail -f ../logs/catalina.out
fi