前言
之前杀死tomcat进程,要么是通过进入tomcat中的bin目录,使用shutdown.sh来停止tomcat,要么是通过分步骤执行命令来杀死tomcat进程来停止tomcat服务。最近看到使用一条长命令来停止tomcat服务,里面有不少命令不熟悉,就去查资料了解下,在这里记录下来。
场景
强制杀死tomcat进程
使用的命令ps aux| grep /zndata/server/apache-tomcat/tomcat|grep -v grep | cut -c 9-15 | xargs kill -9
1 grep -v grep
:表示在文档中过滤掉包含有grep字符的行,参数v表示过滤的作用。
ps aux| grep /zndata/server/apache-tomcat/tomcat
和ps aux| grep /zndata/server/apache-tomcat/tomcat|grep -v grep
区别如下:
2 cut -c 9-15
:cut是一个选取命令,就是将一段数据经过分析,取出我们想要的,-c是以字符为单位进行分割。9-15表示从第9个字符开始截取,到第15个字符结束
ps aux| grep /zndata/server/apache-tomcat/tomcat|grep -v grep | cut -c 9-15 |
的效果如下:
3 xargs kill -9
: xargs是将管道之前得到的值作为一个参数传进来,ps aux| grep /zndata/server/apache-tomcat/tomcat|grep -v grep | cut -c 9-15
得到的值为17597,那么ps aux| grep /zndata/server/apache-tomcat/tomcat|grep -v grep | cut -c 9-15| xargs kill -9
等同于 kill -9 17597
,杀死pid为17597的进程。
4 ps aux | grep tomcat |grep -v grep | awk '{print $2}'| xargskill -9
这条命令也可以杀死tomcat进程。awk是一个强大的文本分析工具,awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。$2表示第二个参数,以空格为分隔符,tomcat的pid正好是第二个。print表示将其标准输出在控制台。
总结
杀死tomcat进程的基本思路是首先查找所有进程,通过grep查到tomcat进程,过滤掉grep其本身的进程,再截取到tomcat的pid,将pid作为参数传入,使用kill命令杀死该pid进程。cut和awk命令均是为了截取到tomcat的pid。