动弹里求助了下如何自动更新java web项目到Tomcat,经过经验和大佬们的说法,感觉tomcat手动重启更新是必须的了,reloadable = true方式不太可靠,也有过tomcat自己关不掉的时候就不能成功更新,而且项目上线以后,不能随时的更新类到项目了,但是还有很多bug需要修复,基本要求每天更新一次,要选在用户量最少的时间段更新,我去,这不是坑爹嘛,你们都回家休息了,我得早来或晚走更新项目,还不多给工资,所以写了个自动更新的shell脚本。
首先你必须把要更新的文件准备好,我的是放在/home/shop/cc/下。脚本很简单,不喜勿喷
忘说了,在linux下用crontab设置定时任务,脚本在root用户下运行才好使。
#!/bin/sh #----------------------------------------------------------------------------- #备份 #----------------------------------------------------------------------------- file=$(date '+%m-%d') #备份class文件 echo $(date) 备份/opt/wwwroot/WEB-INF/下的文件 cd /opt/backups/ mkdir $file cd $file cp /opt/wwwroot/WEB-INF/ . -r #----------------------------------------------------------------------------- #更新 #----------------------------------------------------------------------------- #停止tomcat echo $(date) 关闭tomcat cd /opt/apache-tomcat-6.0.36/bin/ ./shutdown.sh echo tomcat停止运行 #判断Tomcat是否已经停止工作 echo $(date) 判断tomcat是否停止工作,如果没有,则间隔一段时间后强制关闭 int=0 while (($int < 5)) do pid=$(ps aux|grep tomcat-|grep -v grep|awk '{print $2}') if ["$pid"=""] then echo $pid 不存在 int=5 else echo $pid 存在,休息20s let"int++" sleep 20s if ["$int"="4"] then echo $(date) 强制关闭tomcat kill -9 $pid fi fi done #备份log日志 echo $(date) 备份log日志 cd /opt/apache-tomcat-6.0.36/logs/ mv catalina.out catalina-$file.out #拷贝更新文件 echo $(date) 把更新文件拷贝到运行目录 cd /home/shop/cc/ cp * /opt/wwwroot/ -r #设置ulimit -n 65000 echo $(date) 设置ulimit cd /opt/apache-tomcat-6.0.36/bin/ ulimit -n 65000 #启动 echo $(date) 启动tomcat ./startup.sh #-----------------------------------------------------------------------------