参考链接:
https://blog.csdn.net/weixin_43738524/article/details/84662927
https://blog.csdn.net/zglwy/article/details/53084734
-
首先编写这个shell脚本需要使用到的一个语法是shell中的case用法,用法示例如下:
#!/bin/sh echo "Is it morning?" # 接收一个输入的值,引用这个值时需要带上$符号,如果后面拼接其他内容,则要使用花括号进行限位,如{$data} read data case "$data" in yes|Yes|YES|y) echo "Good Morning.";; [Nn]*) echo "Good Afternoon.";; *) echo "Sorry, answer is not true.";; esac exit 0
case命令会对用来做比较的字符串进行正常的通配符扩展,因此你可以指定字符串的一部分并在其后加上一个 * 通配符。只使用一个单独的 * 表示可以匹配任何可能的字符串,因此末尾可以放上一个 *,这相当于C语言中的default语句。
在第二个【Nn】*中,表示任何以N或n开头的单词,都会匹配这一句并执行,输出Good Afternoon。
此外,每一条语句的末尾应该是两个分号! -
case 语句的结构特点
- case行尾必须为单词 in 每个模式必须以右括号 ) 结束
- 双分号 ;; 表示命令序列结束
- 匹配模式中可是使用方括号表示一个连续的范围,如[0-9];使用竖杠符号“|”表示或最后的“)”表示默认模式,当使用前面的各种模式均无法匹配该变量时,将执行“)”后的命令序列
-
了解以上几个知识点之后,我们就可以开始编写这个用于实现部署、启动、停止tomcat服务的shell脚本了。
#!/bin/bash tomcat_home=/home/bouser/backoffice/tomcat8 SHUTDOWN=$tomcat_home/bin/shutdown.sh STARTTOMCAT=$tomcat_home/bin/startup.sh echo $2 $1 $tomcat_home #pidlist1=`ps -ef |grep tomcat |grep -v "grep"|awk '{print apache-tomcat-7.0.59_$2}' #echo $pidlis1t1 case $1 in deploy) echo "关闭$tomcat_home" $SHUTDOWN sleep 5 echo "正在删除原来的 $tomcat_home" rm $tomcat_home/logs/* -rf #删除tomcat的临时目录 rm $tomcat_home/work/* -rf #删除原来的War包 rm -rf $tomcat_home/webapps/backoffice rm -rf $tomcat_home/webapps/backoffice.war sleep 2 echo "正在拷贝war包..." cp backoffice.war $tomcat_home/webapps/ sleep 3 $STARTTOMCAT tail -f $tomcat_home/logs/catalina.out ;; start) echo "启动$tomcat_home" $STARTTOMCAT tail -f $tomcat_home/logs/catalina.out ;; stop) echo "关闭$tomcat_home" $SHUTDOWN #pidlist=`ps -ef |grep tomcat |grep -v "grep"|awk '{print apache-tomcat-7.0.59_$2}'` #kill -9 $pidlist #删除日志文件,如果你不先删除可以不要下面一行 rm $tomcat_home/logs/* -rf #删除tomcat的临时目录 rm $tomcat_home/work/* -rf ;; restart) echo "关闭$tomcat_home" $SHUTDOWN #pidlist=`ps -ef |grep tomcat |grep -v "grep"|awk '{print $2}'` #kill -9 $pidlist #删除日志文件,如果你不先删除可以不要下面一行 rm $tomcat_home/logs/* -rf #删除tomcat的临时目录 rm $tomcat_home/work/* -rf #休眠5秒 sleep 5 echo "启动$tomcat_home" $STARTTOMCAT #看启动日志 tail -f $tomcat_home/logs/catalina.out ;; logs) cd $tomcat_home/logs tail -f catalina.out ;; esac
-
执行
#关停tomcat服务器 [bouser@cnot081 ~]$ ./tomcat.sh stop
但是这时候可能会出现权限不足的提示 Permission denied:
-
出现4上面所提示权限不足的问题,我们只要对这个文件更改权限,然后再执行4中的操作即可。
[bouser@cnot081 ~]$ chmod tomcat.sh