1 背景介绍
每次发布tomcat项目的时候都要反复敲一些命令,重启tomcat之前先检查tomcat进程有没有停掉,没有还要手动kill该进程,单独部署一个项目还好,如果一次多个部署,就比较费劲了

2.知识剖析
2.1什么是shell脚本
Shell Script [1] ,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令。

2.2shell的基本语法(具体参考http://www.runoob.com/linux/linux-shell.html)
1.echo 命令用于向窗口输出文本
2.定义变量:your_name=“runoob.com”,war=1,dir="/root/deployWar/1,dir="/root/deployWar/1,dir="/root/deployWar/{war}
3.if语句:跟java里面差不多,但是有一点要注意。
if 语句语法格式:

 if conditionthencommand1 command2...commandN fi

注:这个格式下一定注意后面必须有fi
3.常见问题
1)什么是shell脚本?
2)怎么写一个简单的脚本?
3)部署脚本是什么?

4.解决方案:
掌握基本shell语法,和写代码一样,通过一些逻辑来运算一些命令达到相应的目的。

5.编码实战
使用方法,将两个shell脚本置于tomcat的bin目录下,chmod +x 为两个脚本给上可执行权限,直接用./deploy.sh或./restart.sh执行即可。具体实现功能:1.deploy.sh首先删除webapps目录下项目war包(tomcat会自动删除war包解压出来的文件夹)。2.shutdown关闭tomcat,如若3s后还未关闭使用kill -9 杀死该进程。3.将已上传到指定位置的war包部署到tomcat并通过restart.sh重启tomcat。下面附上代码:deploy.sh

#!/bin/sh
war=$1
dir="/root/deployWar/${war}"
echo "-------project file:${dir}-------"
bin=$(cd `dirname $0`; pwd)
echo "-------current directory ${bin}--------"
if [ ! -n "${war}" ]; thenecho "-------Usage: $0 [project.war]-------"exit 0
fi
if [ ! -f "${dir}" ]; thenecho "-------Error: ${dir} does not exist.--------"exit 0
fi
if [ ! "${war##*.}" ="war" ]; thenecho "-------Error:${war} is not a war file.--------"exit 0
fi
echo "-------Deploy ${war##*/}...-------"
if [ -f "${bin}/../webapps/${war}" ]; thenrm -rf ${bin}/../webapps/${war}echo "-------delete: ${bin}/../webapps/${war}------"
fi
cp -f ${dir} ${bin}/../webapps/
echo "Restart tomcat..."
exec ${bin}/restart.sh

restart.sh文件内容:

#!/bin/shbin=$(cd `dirname $0`; pwd)
pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} | awk '{print $2}')if [ -n "${pid}" ]; thenecho "Shutdow...."sh ${bin}/shutdow.shsleep 3pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} | awk '{print $2}')if [ -n "${pid}" ]; thenkill -9 &{pid}slepp 1fi
fi
echo "Startup..."
sh ${bin}/startup.sh
if [ "$1" = "-v" ]; thentail -f ${bin}/../logs/catalina.out
fi

6.扩展思考:
怎么样一键部署不同的服务等一些功能,比如:一键部署到指定的rensin,jetty,tomcat。
7.参考文献
CSDN、百度百科,https://blog.csdn.net/qq_38439885/article/details/79993389?utm_source=copy

8 更多讨论
总结:
1))什么是shell脚本?
就是通过一些shell语法和逻辑处理,把一些liunx的命令组合在一起去完成特定的功能。
2)怎么写一个简单的脚本?
掌握基本shell语法,和写代码一样,通过一些逻辑来运算一些命令达到相应的目的。
3)部署脚本是什么?
部署脚本,就是一键把指定文件夹下的war包部署到tomcat的上。

温馨提示:本人初学java者,如有不对敬请指出,谢谢!

如何写shell脚本?尝试自己编写一个简单脚本。相关推荐

  1. 如何写SHELL脚本?尝试自己编写一个简单脚本

    背景 现在多数的服务器都是Linux系统的,需要通过shell来进行操作,而利用shell脚本,可以大大提高开发维护的效率. 知识剖析 什么是shell shell是一个命令行解释器,它为用户提供了一 ...

  2. redchat怎么编写shell脚本_如何写shell脚本?尝试自己编写一个简单脚本

    1. 创建Shell脚本文件 2. 显示消息 3. 使用变量 4. 反引号 5. 重定向输入输出 6. 管道 7. 执行数学运算 8. 退出脚本 1. 创建脚本文件的时候,必须将文件的第一行指定要使用 ...

  3. linux系统写一个脚本,编写一个简单的linuxshell脚本

    shell脚本和windows平台上的bat批处理是一样的,简化用户处理重复动作的操作,shell脚本由shell命令组成.下面是学习啦小编收集整理的编写一个简单的linuxshell脚本,希望对大家 ...

  4. 编写一个最简单的.php,学习猿地- 说明 如果我们要编写一个简单的PHP脚本,需要学习哪些...

    说明 如果我们要编写一个简单的 PHP 脚本,需要学习哪些基础知识呢? PHP 基础 PHP 脚本可放置于文档中的任何位置. 标准 的 PHP 脚本以 <?php 开头,以 ?> 结尾: ...

  5. python脚本编写_如何用Python包编写一个简单的脚本,表达你对父母的爱?

    全文共2800字,预计学习时长6分钟 在繁忙的工作生活中,我们经常忘记给所爱的人发WhatsApp.本教程将使用Python包Twilio编写一个简单的Python脚本来发送WhatsApp消息.我们 ...

  6. Python 在windows上跑图色脚本?简单又好玩,自己编写一个自动化脚本

    Python 在windows上跑图色脚本?简单又好玩,自己编写一个自动化脚本 大家好 我又来开新坑了,如图这次准备用python弄个简单脚本(根据图色判断进行键鼠操作) 1.老规矩 先安排运行环境 ...

  7. 用 Go 编写一个简单的 WebSocket 推送服务

    用 Go 编写一个简单的 WebSocket 推送服务 本文中代码可以在 github.com/alfred-zhon- 获取. 背景 最近拿到需求要在网页上展示报警信息.以往报警信息都是通过短信,微 ...

  8. python编写登录_通过Python编写一个简单登录功能过程解析

    通过Python编写一个简单登录功能过程解析 需求: 写一个登录的程序, 1.最多登陆失败3次 2.登录成功,提示欢迎xx登录,今天的日期是xxx,程序结束 3.要检验输入是否为空,账号和密码不能为空 ...

  9. Linux环境使用命名空间编写一个简单的容器应用程序:namespace,container,cgroups

    目录 使用命名空间编写一个简单的容器应用程序 创建一个子进程– fork vs clone 具有clone(2)的命名空间 简单示例 - CLONE_NEWPID 隔离网络接口 - CLONE_NEW ...

最新文章

  1. sublime text 3170 破解工具
  2. Oracle CheckPoint进程
  3. mysql学习笔记-事务
  4. 在Spring启动时与mongodb一起摇摆
  5. 淘宝如何保障业务稳定性——诺亚(Noah)自适应流控
  6. 基于css和jQuery实现轮播图
  7. JavaScript闭包详解
  8. 动环监控调试线_电力综合监控系统解决方案-【斯必得智慧物联】
  9. python xlrd 读取excel
  10. 2.算法通关面试 --- 堆栈和队列
  11. 关于【CSDN免积分下载器】的分析
  12. 2017软件构造3.3
  13. python信用评分卡建模
  14. 环境影响评价期末考试题库
  15. gtool:操作genotype data的利器
  16. 【verbs】ibv_create_cq()
  17. flask中jinjia2模板引擎的使用详解3
  18. 数据结构之Python实现二分法查找dichotomy
  19. 支付业务与技术架构学习总结(2)——到底什么才是银行业务架构?
  20. 简单十步创建个人博客网站

热门文章

  1. 滴答清单windows_使用预升级清单免费更新到Windows 10头痛
  2. Tkinter 组件详解(五):Frame
  3. 什么是QinQ, QinQ基础,VLAN双层TAG
  4. 解决板料五金冲压回弹的工艺措施做法
  5. 大神作家用什么软件码字_什么是读者作家问题?
  6. 原生js+div+css,动态画结构图/流程图
  7. T 39786-2021
  8. 【问题总结】怎么确定多元隐函数谁是自变量谁是因变量?
  9. 【行研资料】2021全球媒体发展趋势报告(英文).PDF——附下载
  10. jQuery EasyUI 1.3 中文文档