当我们要杀掉某个应用服务进程时,一般会执行以下命令:
ps -ef | grep java | grep job | grep -v grep | awk '{print $2}' | xargs kill -9
以下分解来进行说明。
一、ps -ef
ps:查看服务器的进程信息
选项:
-e:等价于 -A,表示列出全部的进程
-f:显示全部的列
二、grep java
grep:查找含有指定文本的行
grep java:查找含有 ‘java’ 的行
三、grep job
grep:查找含有指定文本的行
grep job:查找含有 ‘job’ 的行
执行 ps -ef | grep java | grep job 的结果如下:
[root@ecs-uat ~]# ps -ef|grep java |grep job
root 21272 1 0 Apr27 ? 00:16:28 java -jar xxl-job-admin-2.3.1-SNAPSHOT.jar
root 21368 1 0 Apr27 ? 00:09:55 java -jar xxl-job-executor-sample-springboot-2.3.1-SNAPSHOT.jar
四、grep -v grep
grep -v:反向查找
grep -v grep:查找不含有 grep 的行
五、awk ‘{print $2}’
$2:第二个字段
print $2:打印第二个字段
awk ‘{print $2}’:一行一行的读取显示的信息, 以空格作为分隔符,打印第二个字段
执行 ps -ef | grep java | grep job | grep -v grep | awk ‘{print $2}’ 的结果如下:
[root@ecs-uat ~]# ps -ef | grep java | grep job | grep -v grep | awk '{print $2}'
21272
21368
六、xargs kill -9
xagrs:接收管道传过来的参数
xargs kill -9:将前面获取到的进程号通过空格分割,传递给 kill -9,杀死所有进程
执行 ps -ef | grep java | grep job | grep -v grep | awk ‘{print $2}’ | xargs kill -9 会将 21272、21368 进程杀死。