一.说明

  我们每次在tomcat中发布新war包,总是要经历【备份-停机-上传-启动】这几个部分,其中上传的环节和网速有极大相关性,要是网速很慢,那么整个发布的时间就会很长。

  如果我们不借助于自动化发布工具,那么我们可以预先上传war包到指定目录,然后用shell脚本来完成【备份-停机-拷贝-启动】,将上传动作替换为拷贝动作,这样发布的时间就不依赖网速了。

二.目录结构

三.脚本

#!/bin/bash
#检查所需文件
#判断war包是否存在
if [ ! -f "/home/ap/warDir/client.war" ];then
echo "/home/ap/warDir/client.war不存在,请上传"
exit
fi #查找tomcat进程
tomcat_pid=`ps -ef | grep apache-tomcat-7.0.85 | grep -v grep | awk '{print $2}'`
if [ "$tomcat_pid" == "" ];then
echo "tomcat未运行"
else
ps -ef | grep apache-tomcat-7.0.85 | grep -v grep | awk '{print $2}' | xargs kill -9
echo "tomcat已停止"
fi #清除tomcat缓存
rm -rf /home/ap/apache-tomcat-7.0.85/work/Catalina/localhost/*
echo "清理tomcat缓存完成" #判断backup文件夹是否存在
if [ ! -d "/home/ap/apache-tomcat-7.0.85/backup/" ];then
mkdir /home/ap/apache-tomcat-7.0.85/backup
echo "backup文件夹创建成功"
fi
#备份文件
#cp前要加\,否则cp等同于cp -i,那么-f就不会生效了
\cp -f /home/ap/apache-tomcat-7.0.85/webapps/*.war /home/ap/apache-tomcat-7.0.85/backup
echo "文件备份成功" #清除tomcat webapps目录
rm -rf /home/ap/apache-tomcat-7.0.85/webapps/*
echo "清理webapps目录成功" #拷贝新war包到webapps目录
cp -f /home/ap/warDir/*.war /home/ap/apache-tomcat-7.0.85/webapps
echo "新war包已拷贝至webapps目录" #启动tomcat
cd /home/ap/apache-tomcat-7.0.85/bin
echo "####################"
echo "## 开始启动tomcat ##"
echo "####################"
./startup.sh & tail -f ../logs/catalina.out

四.注意事项

1.清注意脚本中的各路径,需要替换成本机器的路径和环境信息

2.rm -rf 命令,最好写绝对路径,避免因为文件夹不存在造成把根目录删除了

3.可以根据需求,自定义更多的功能

五.其他

停止tomcat的脚本

ps -ef | grep apache-tomcat-7.0.85 | grep -v grep | awk '{print $2}' | xargs kill -9

tomcat快速发布备份脚本的更多相关文章

  1. 大型项目linux自动化版本发布脚本(shell)之tomcat、nginx服务脚本

    开发十年,就只剩下这套Java开发体系了 >>>   最近,又临近博主所负责的一个大型项目的发版了.之前有提到过,该项目涉及到30-40台服务器的发版.且项目客户规定发版需在晚上10 ...

  2. Tomcat 快速入门

    Tomcat 快速入门 版本说明 本文使用 Tomcat 版本为 Tomcat 8.5.24. Tomcat 8.5 要求 JDK 版本为 1.7 以上. 简介 Tomcat 是什么 Tomcat 是 ...

  3. 【转】Tomcat 快速入门

    本文转载自:https://www.cnblogs.com/jingmoxukong/p/8258837.html?utm_source=gold_browser_extension 目录 Tomca ...

  4. 使用 flow.ci 快速发布你的项目文档

    软件研发的协作过程中,文档是必不可少的一环,有需求文档.接口文档.使用文档等等.当开始写文档时,首先会遇到两个问题: team members 之间如何协作? 文档 OK 后如何分发,去哪里看?如何更 ...

  5. oracle备份脚本

    利用EXP导出全库,必须用SYSTEM或者DBA用户来导出. 具体脚本实现如下 全库导出(fullbackup): #!/bin/bash bname=`date +%Y%m%d` cd /backu ...

  6. Tomcat 服务器及使用Eclipse绑定Tomcat并发布应用

    一.简介 Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发而成 ...

  7. Mysqldump备份说明及数据库备份脚本分享-运维笔记

    MySQLdump是MySQL自带的导出数据工具,即mysql数据库中备份工具,用于将MySQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中.Mysqldump是一个客户端逻辑备份的工 ...

  8. 让你快速学会Shell脚本

    Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合.Shell可以直接使用在win/Unix/Linux上面, ...

  9. Tomcat学习(一)——使用Eclipse绑定Tomcat并发布应用

    1.下载Tomcat 官网地址:http://tomcat.apache.org/whichversion.html 2.目录结构 bin:脚本目录 启动脚本:startup.bat 停止脚本:shu ...

随机推荐

  1. Spring学习笔记--面向切面编程(AOP)

    什么是AOP AOP(Aspect Oriented Programming),意为面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的 ...

  2. Java代码搭建Dubbo+ZooKeeper 的示例

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  3. Docker小白到实战之开篇概述

    前言 "不对啊,在我这运行很正常啊",这句话小伙伴们在前几年应该听得很多:每次一到安装.部署时总有一堆问题,毕竟操作系统版本.软件环境.硬件资源.网络等因素在作怪,此时难免会导致开 ...

  4. windows和linux传输小技巧——FTP服务

    目录 一.FTP简介 二.匿名用户访问设置 三.设置本地用户验证访问ftp 3.1.修改匿名用户.本地用户登录的默认根目录 四.使用user_list列表 一.FTP简介 FTP服务--用来传输文件的 ...

  5. Java服务突然失败:A fatal error has been detected by the Java Runtime Environment的总结

    服务启动以后过段时间自动失败:A fatal error has been detected by the Java Runtime Environment 控制台中的错误信息 A fatal err ...

  6. 一次关于shiro反序列化漏洞的思考

    0x01前言 之前在我反序列化的那篇文章中(https://www.cnblogs.com/lcxblogs/p/13539535.html),简单说了一下反序列化漏洞,也提了一嘴常见的几种Java框 ...

  7. C#与.NET、CLR、CLI是什么关系?什么是.NET框架

    1.C#与.NET.CLR.CLI是什么关系?什么是.NET框架?      这个问题好专业啊!一句话两句话还真不好说清.您听说过C++中有个COM的概念吧?您听说过JAVA里的虚拟机吧?CLR(公共 ...

  8. 【java虚拟机】jvm调优

    转自:https://www.cnblogs.com/starhu/p/6400348.html?utm_source=itdadao&utm_medium=referral 堆大小设置JVM ...

  9. linux的一般命令------附加

    1.cat /etc/redhat-release             查看linux版本 2. ps -ef|grep ssh                        查看进程在不在 3. ...

  10. Hibernate之持久化对象

    时间:2017-1-19 23:00 --Hibernate持久化类的状态1.持久化类:就是一个实体类与数据库建立了映射.2.Hibernate为了方便管理持久化类,将持久化类分为了三种状态:    ...