最近在开发一个项目,部署应用的环境是linux、tomcat8,因为之前的项目都是由专业的实施人员负责部署,对于我来讲linux的掌握程度则相对较低。尽管在 Linux学习笔记 - (一)Linux达人养成计划 I — 吐血整理 中分享过自己学习的记录,但是并未真正实践过。
谨以此项目来练手第一个shell实战脚本。
编写脚本之前首先要有明确要实现的功能和步骤。
功能: 备份原war、部署新war包。
前提: 新demo.war包已上传至/app/backup目录(这一步目前是手动操作)。
脚本编写逻辑:
#!/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脚本,踩了一些坑,仅此记录:
fi
结尾处多加了一个空格,导致语法报错,linux空格敏感;/bin/bash^M: 坏的解释器: 没有那个文件或目录
;\n\r
,而linux是\n
,因此还需要在linux上执行替换的语句sed -i 's/\r$//' demo.sh
另外,此脚本还不尽完善,只能在特定情况下执行才不会报错:
希望以后能更多地掌握linux下的使用技巧,到时再来分享。
题目大意:给定一个二维矩阵,求出现次数最多的a*b的子矩阵二维Hash,只要记住横纵的BASE不能相同就可以,爱怎么搞怎么搞一开始写的自然溢出 结果OLE 以为是自然溢出被卡掉了于是写了双取模…… 结果还是OLE最后发现尼玛这题读入坑爹……字符串里有空格不说,满满的不可见字符是咋回事……记住不要用scanf读入……可以用gets,或者fread,注意要把一开始的回车过滤掉get
下拉列表UGUIhttps://blog.csdn.net/fanfan_hongyun/article/details/98764505_ugui 下拉链表
投稿上传的tex文件采用Springer的模板,并添加了自己的一些package,如下图。在参考文献方面,采用bib的方式,如下图。其他的内容也就是填充自己的内容,文章中subfigure的内容也正常添加。上传时,依次提交如下图中的文件。刚开始时,并没上传.bbl文件,也没有将上述2-9的文件改成“*Manuscript”,造成参考文献显示不出来,参考文献标注的地方也变..._springer投稿latex
如果你刚刚开始使用Python, 并且想了解更多信息, 请参加srcmini的Python数据科学入门课程。你们中的许多人在阅读本教程时可能会认为, 关于简单的Python Print函数并没有发现任何问题, 因为你们所有人都已经开始使用常青的打印Hello, World!示例来学习Python。的确, Python或就任何一种编程语言而言, Print函数都是学习特定语言时最基本, 最简单的步骤..._python printline
. 什么是socket?说到网络编程,难免要提到socket?那什么是socket呢,中文名叫"套接字",更难理解了吧。通俗来讲,socket表示一个网络连接,通过这个连接,使得主机间或者一台计算机上的进程间可以通讯。不管是不同主机,还是同一主机。既然是通信,必定有一个发送方,一个接收方。对应一个客户端,和一个服务端。. 创建socket客户端创建socket,建立连接1import socket..._用python开发kook机器人
鑫奥博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
导入包: \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
解决步骤1:先打开谷歌浏览器查看我们的浏览器版本,在打开以下网址下载对应的 chromeDriver版本 ,https://chromedriver.storage.googleapis.com/index.html;】,备注“入群”, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。今天在练习selenium运行后报错 ,网上找了很多方法,最终终于解决。下载浏览器对应的驱动版本。
很多初学者都会问我“我想学C,该怎么开始呢?”今天我们就来聊一聊属于初学者必须懂的知识希望小伙伴们能够牢记基础知识唯有不断努力才能更加顺利C语言好了,闲话不多说,开讲了!基本常识计算机语言: 把人与计算机之间交流的语言叫做计算机语言计算机语言分为高级语言和低级语言高级语言:远离硬件低级语言:贴近硬件指令: 是指计算机执行某种操作的命令它由一串二进制数码组成。一条指令通常由两个部分组成: 操作码+地..._c语言prime函数可以直接用吗
目录1,首先创建主搜索请求:2,对主搜索请求进行参数设置 前端几节都是介绍的基于单个文档或着单个文档库的操作,..._elasticsearch searchrequest 怎么 添加 query条件
一客户上午报过来一个OGG错误2018-03-28 10:26:20 ERROR OGG-01416 Oracle GoldenGate Capture for Oracle, P_HYDEE.prm: File ...
本篇文章介绍了在win10下PHP开发环境的搭建,过程也比较详细,有需要的朋友可以看一下。1.安装php下载并解压php7到d:\php7http://windows.php.com/download#php-7.0 选择合适的版本下载2.安装Apache下载并解压Apache 到 d:\Apache24 (注意,只能解压到磁盘根目录下)http://www.apachehaus.com/cgi-...