linux下备份、替换、重启tomcat简单shell脚本
背景
最近在开发⼀个项⽬,部署应⽤的环境是linux、tomcat8,因为之前的项⽬都是由专业的实施⼈员负责部署,对于我来讲linux的掌握程度则相对较低。尽管在 中分享过⾃⼰学习的记录,但是并未真正实践过。
谨以此项⽬来练⼿第⼀个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 ];shell最简单脚本
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下的使⽤技巧,到时再来分享。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论