昨天去面试,结果这么简单的题没写对,我擦,结果今天好好的试了一下,正确的命令应该是这样的:
kill -9 `ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`
这样执行首先要保证叫tomcat的进程有且只有一个,
小的解释下吧,
原理就是找出这个进程的pid 然后使用kill -9 'pid'命令去结束掉这个进程,
首先是如何获取名字叫tomcat的进程,都是一步一步写出来的,
首先 ps -ef | grep tomcat 这样会获取到两条记录,一条是grep tomcat,一条是叫tomcat的进程,
这样就必须要过滤掉grep tomcat这条记录:ps -ef | grep tomcat | grep -v grep 这样就可以过滤掉这条记录,剩下来的任务就是如何通过这条记录获取到pid
这就需要使用awk 进行筛选,ps -ef | grep tomcat | grep -v grep | awk '{print $2}' 其中{print $2}是要获取到第二个参数,也就是进程号的位置,然后就是最后一步了,用这个命令的输出做下个命令的输入
kill -9 `ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`,其中标点符号需要注意下,ps之前的是`也就是键盘上1左边的,而awk之后的就是单引号',这样就可以把叫做tomcat的进程干掉了~
希望需要的同学可以得到帮助,如果想写成shell脚本的话可以把进程的名字做为输入参数传入到脚本中,这样就可以更灵活~