之前总是要更新基于 Tomcat 的web项目,而且更新频繁。

手工更新太烦人了,遂写了一个半自动的脚本。已经快一年没接触 Tomcat ,脚本仅供参考 。


#!/bin/bash
# Author: Jeffery.Su
# Mail: jeffrey.su@suzf.net
# Site: http://suzf.net
# Date: Sep 10,2014
# Version: 1.0.2

# Definite variable
PRO_NAME=javacenter
WORK_PATH=/usr/local/tomcat/webapps
BACK_PATH=/opt/backup/${PRO_NAME}
UPLOAD_PATH=/root/$PRONAME
DATE=$(date '+%Y%m%d')
BACK_NAME="$PRO_NAME-$DATE.tar.gz"
#eval `date "+day=%d; month=%m; year=%Y"`
#BACK_NAME="$PRO_NAME-$year-$month-$day.tar.gz"

# Backup and Gzip the whole folder
[ -d $BACK_PATH ] || mkdir -p $BACK_PATH
cd $WORK_PATH
tar Ppzcf $BACK_PATH/$BACK_NAME $PRO_NAME
echo -e " $(date) Loading backup programmer, please waiting a moment....\n"
if [ $? -eq 0 ];then
echo -e " $(date) Backup the file succeed !\n"
else
echo -e " $(date) Backup the file failed ! please check !!!\n"
return 1;
fi

# Move the current webapps
mv $PRONAME/ $BACK_PATH/$BACK_NAME
rm -rvf $PRONAME.war

# Upload the new webapps
# Check the file complete upload
[ -d $UPLOAD_PATH ] || mkdir $UPLOAD_PATH
mv $UPLOAD_PATH/$PRO_NAME/* .
if [ "$?" == "0" ];then
echo "Please upload the webapps to $UPLOAD_PATH"
sleep 360;
fi

# Restart tomcat
echo -e " $(date) Stop tomcat\n"
../bin/shutdown.sh

i=0
while (($i <5)) do PID=`ps aux|grep tomcat |grep -v "grep\|sh"|awk '{print $2}'` if [[ "$PID" == "" ]];then echo "$PID not exits , tomcat hava stop success" i=7 else echo "$PID is exits , tomcat is running" let "i++" sleep 7; echo "$(date) Forced to stop tomcat" # kill -9 $PID fi done echo -e "$(date) start tomcat\n" ../bin/startup.sh # Remove the old backups find $BACK_PATH -mtime +15 -exec rm -rf {}\; > /dev/null 2>&1

# Watch the log of catalina.out
#tailf ../logs/catalina.out