linux下备份、替换、重启tomcat简单shell脚本_linux tomcat备份-程序员宅基地

技术标签: 技术  tomcat  linux  

背景

最近在开发一个项目,部署应用的环境是linux、tomcat8,因为之前的项目都是由专业的实施人员负责部署,对于我来讲linux的掌握程度则相对较低。尽管在 Linux学习笔记 - (一)Linux达人养成计划 I — 吐血整理 中分享过自己学习的记录,但是并未真正实践过。
谨以此项目来练手第一个shell实战脚本。

步骤

编写脚本之前首先要有明确要实现的功能和步骤。
功能: 备份原war、部署新war包。
前提: 新demo.war包已上传至/app/backup目录(这一步目前是手动操作)。
脚本编写逻辑:

  1. 停应用;
  2. 备份旧demo.war;
  3. 替换新demo.war;
  4. 重启tomcat;

脚本

#!/bin/bash
#以当天时间创建备份文件夹
BASEDATE=`date '+%Y%m%d'`
#先杀tomcat进程
ps -ef|grep tomcat|grep -v grep|awk '{print $2}'|xargs kill -9
#备份web包
backupdir=/app/backup/${BASEDATE}
if [ ! -d "${backupdir}" ]; then
    #若不存在当天文件夹,则新建一个
    mkdir -p ${backupdir}
fi
cd ${backupdir}
#若当天路径下还没有备份文件,则先进行备份
if [ ! -f demo.war ]; then
   cd /app/apache-tomcat-8.0.51/webapps
   echo "开始备份war包"
   cp /app/apache-tomcat-8.0.51/webapps/demo.war ${backupdir}/demo.war
   #判断备份命令的结果
   if [ $? -eq 0 ];
        then
        echo   " 备份完成"
        #删除原部署war包
        rm -f /app/apache-tomcat-8.0.51/webapps/demo.war
   else
        echo   " 备份失败"
   fi
else
    echo " 当天文件已备份,无需再次备份"
    #删除原部署war包
    rm -f /app/apache-tomcat-8.0.51/webapps/demo.war
fi
#将新上传war包移动到部署目录
mv /app/backup/demo.war /app/apache-tomcat-8.0.51/webapps/demo.war
#重启tomcat
cd /app/apache-tomcat-8.0.51/bin
sh startup.sh

总结

由于是初次编写shell脚本,踩了一些坑,仅此记录:

  1. fi 结尾处多加了一个空格,导致语法报错,linux空格敏感;
  2. 在windows上编辑了shell脚本,linux上报错/bin/bash^M: 坏的解释器: 没有那个文件或目录
    原因是windows默认换行符为\n\r,而linux是\n,因此还需要在linux上执行替换的语句sed -i 's/\r$//' demo.sh

另外,此脚本还不尽完善,只能在特定情况下执行才不会报错:

  • tomcat服务器处于运行状态;
  • /app/backup 目录下有demo.war文件
  • /app/apache-tomcat-8.0.51/webapps 目录下有demo.war文件

希望以后能更多地掌握linux下的使用技巧,到时再来分享。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/leeo_may/article/details/95450772

智能推荐

BZOJ 1170 [Balkan2007]Cipher Hash-程序员宅基地

题目大意:给定一个二维矩阵,求出现次数最多的a*b的子矩阵二维Hash,只要记住横纵的BASE不能相同就可以,爱怎么搞怎么搞一开始写的自然溢出 结果OLE 以为是自然溢出被卡掉了于是写了双取模…… 结果还是OLE最后发现尼玛这题读入坑爹……字符串里有空格不说,满满的不可见字符是咋回事……记住不要用scanf读入……可以用gets,或者fread,注意要把一开始的回车过滤掉get

2021-03-22---下拉列表UGUI_ugui 下拉链表_一个采集的博客-程序员宅基地

下拉列表UGUIhttps://blog.csdn.net/fanfan_hongyun/article/details/98764505_ugui 下拉链表

Springer Latex投稿记录_springer投稿latex-程序员宅基地

投稿上传的tex文件采用Springer的模板,并添加了自己的一些package,如下图。在参考文献方面,采用bib的方式,如下图。其他的内容也就是填充自己的内容,文章中subfigure的内容也正常添加。上传时,依次提交如下图中的文件。刚开始时,并没上传.bbl文件,也没有将上述2-9的文件改成“*Manuscript”,造成参考文献显示不出来,参考文献标注的地方也变..._springer投稿latex

printline函数python_Python Print()函数-程序员宅基地

如果你刚刚开始使用Python, 并且想了解更多信息, 请参加srcmini的Python数据科学入门课程。你们中的许多人在阅读本教程时可能会认为, 关于简单的Python Print函数并没有发现任何问题, 因为你们所有人都已经开始使用常青的打印Hello, World!示例来学习Python。的确, Python或就任何一种编程语言而言, Print函数都是学习特定语言时最基本, 最简单的步骤..._python printline

python机器人开发教程_Python进阶开发之网络编程,socket实现在线聊天机器人-程序员宅基地

. 什么是socket?说到网络编程,难免要提到socket?那什么是socket呢,中文名叫"套接字",更难理解了吧。通俗来讲,socket表示一个网络连接,通过这个连接,使得主机间或者一台计算机上的进程间可以通讯。不管是不同主机,还是同一主机。既然是通信,必定有一个发送方,一个接收方。对应一个客户端,和一个服务端。. 创建socket客户端创建socket,建立连接1import socket..._用python开发kook机器人

somewhere, something.-程序员宅基地

鑫奥博http://www.xinaobo.com/轩洋智业http://xuanyang.com.cn/国发商务http://www.sgf-software.com/index.jsp联合基因http://www.unitedgene.com/上海园珠笔芯厂http://1east.com/gg4/01729.htm

随便推点

latex中algorithm与algorithmic的使用_algorithmic latex-程序员宅基地

导入包: \usepackage{algorithm} \usepackage{algorithmic} example:\begin{algorithm} \caption{A} \label{alg:A} \begin{algorithmic} \STATE {set $r(t)=x(t)$} \REPEAT \STATE set $h(t)=..._algorithmic latex

解决Python调试OSError: [WinError 193] %1 不是有效的 Win32 应用程序_测试界的飘柔的博客-程序员宅基地

解决步骤1:先打开谷歌浏览器查看我们的浏览器版本,在打开以下网址下载对应的 chromeDriver版本 ,https://chromedriver.storage.googleapis.com/index.html;】,备注“入群”, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。今天在练习selenium运行后报错 ,网上找了很多方法,最终终于解决。下载浏览器对应的驱动版本。

c语言prime函数怎么用_初学C语言?搞不懂这些就不要谈深度学习了!-程序员宅基地

很多初学者都会问我“我想学C,该怎么开始呢?”今天我们就来聊一聊属于初学者必须懂的知识希望小伙伴们能够牢记基础知识唯有不断努力才能更加顺利C语言好了,闲话不多说,开讲了!基本常识计算机语言: 把人与计算机之间交流的语言叫做计算机语言计算机语言分为高级语言和低级语言高级语言:远离硬件低级语言:贴近硬件指令: 是指计算机执行某种操作的命令它由一串二进制数码组成。一条指令通常由两个部分组成: 操作码+地..._c语言prime函数可以直接用吗

elasticsearch(七)java 搜索功能Search Request的介绍与使用_elasticsearch searchrequest 怎么 添加 query条件-程序员宅基地

目录1,首先创建主搜索请求:2,对主搜索请求进行参数设置 前端几节都是介绍的基于单个文档或着单个文档库的操作,..._elasticsearch searchrequest 怎么 添加 query条件

OGG问题处理(OGG-01031,OGG-01416)-程序员宅基地

一客户上午报过来一个OGG错误2018-03-28 10:26:20 ERROR OGG-01416 Oracle GoldenGate Capture for Oracle, P_HYDEE.prm: File ...

win10php开发,win10php开发环境搭建-程序员宅基地

本篇文章介绍了在win10下PHP开发环境的搭建,过程也比较详细,有需要的朋友可以看一下。1.安装php下载并解压php7到d:\php7http://windows.php.com/download#php-7.0 选择合适的版本下载2.安装Apache下载并解压Apache 到 d:\Apache24 (注意,只能解压到磁盘根目录下)http://www.apachehaus.com/cgi-...

推荐文章

热门文章

相关标签