一般,重启tomcat需要先通过执行shutdown.sh命令来停用tomcat,然后执行startup.sh启用tomcat。有时候shutdown.sh关闭不了tomcat,需要我们kill掉tomcat对应的进程。故写此shell完成操作:
脚本功能:
1、删除tomcat下的work目录
2、使用shutdown.sh关闭服务
3、接上,如果服务未关闭。则查询当前tomcat的进程是否存在,如果存在则强制kill掉进程
4、启动tomcat
#!/bin/sh p=`pwd` work=${p}'/work/' `rm -rf ${work}` tomcatpath=${p}'/bin' echo 'operate restart tomcat: '$tomcatpath pid=`ps aux | grep $tomcatpath | grep -v grep | grep -v retomcat | awk '{print $2}'` echo 'exist pid:'$pid if [ -n "$pid" ] then { echo ===========shutdown================ $tomcatpath'/shutdown.sh' sleep 10 pid=`ps aux | grep $tomcatpath | grep -v grep | awk '{print $2}'` if [ -n "$pid" ] then { sleep 2 echo ========kill tomcat begin============== echo $pid kill -9 $pid echo ========kill tomcat end============== } fi sleep 2 echo ===========startup.sh============== $tomcatpath'/startup.sh' } else echo ===========startup.sh============== $tomcatpath'/startup.sh' fi
将次文件放在tomcat根目录,并且赋予其可执行权限。
注意事项:
如果是在非tomcat目录执行命令,使用绝对路径去调用shell,则脚本第二行需要为变量p赋值,值为tomcat目录。举例:p='/opt/temall'
小知识点:
1、grep -v grep
a、grep 是查找含有指定文本行的意思,比如grep test 就是查找含有test的文本的行
b、grep -v 是反向查找的意思,比如 grep -v grep 就是查找不含有 grep 字段的行
2、awk命令参数
awk中同时提供了print和printf两种打印输出的函数。
其中print函数的参数可以是变量、数值或者字符串。字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。这里,逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。
printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。