前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux学习28-linux一行命令杀掉指定名称进程(killall 、kill 、pkill)

Linux学习28-linux一行命令杀掉指定名称进程(killall 、kill 、pkill)

作者头像
上海-悠悠
发布2020-05-07 10:26:32
6.7K0
发布2020-05-07 10:26:32
举报
文章被收录于专栏:从零开始学自动化测试

前言

常见面试题:如何用一句 linux 指令,查找到指定名称的进程并杀掉 常用的杀进程的三个指令:killall 、kill 、pkill

杀进程几种方式

killall 命令用于杀死指定名字的进程(kill processes by name)

killall [参数] [进程名]

kill 命令杀死指定进程PID的进程

kill [参数] [进程id]

pkill 和 killall差不多,也是用于杀掉指定名称的进程

pkill [参数] [进程名]

killall

先用ps查找出需要杀掉的进程

ps -ef |grep 进程名称

比如我想杀掉 httpd 的进程

代码语言:javascript
复制
[root@VM_0_2_centos opt]# ps -ef | grep httpd
root     21982 21885  0 21:06 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
65534    21983 21982  0 21:06 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
65534    21984 21982  0 21:06 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
65534    21999 21982  0 21:06 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
root     22321 19229  0 21:06 pts/0    00:00:00 grep --color=auto httpd

查找出来的进程很多,如果想一次性杀掉,可以用 killall

killall -9 httpd

再去查看进程就被杀掉了

代码语言:javascript
复制
[root@VM_0_2_centos opt]# killall -9 httpd
[root@VM_0_2_centos opt]# ps -ef | grep httpd
root     22781 19229  0 21:08 pts/0    00:00:00 grep --color=auto httpd

pkill

pkill 和 killall 用法差不多,也是根据进程名称来杀掉全部

pkill -9 httpd

代码语言:javascript
复制
[root@VM_0_2_centos opt]# ps -ef | grep httpd
root     23284 23216  0 21:09 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
65534    23290 23284  0 21:09 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
65534    23292 23284  0 21:09 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
65534    23294 23284  3 21:09 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
root     23377 19229  0 21:09 pts/0    00:00:00 grep --color=auto httpd
[root@VM_0_2_centos opt]# pkill -9 httpd
[root@VM_0_2_centos opt]# ps -ef | grep httpd
root     23680 19229  0 21:09 pts/0    00:00:00 grep --color=auto httpd

kill

kill 是用于杀掉单个进程,根据进程的 PID, ps -ef查出来的第二列就是 PID

代码语言:javascript
复制
[root@VM_0_2_centos opt]# ps -ef | grep httpd
root     24431 24361  0 21:11 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
65534    24432 24431  0 21:11 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
65534    24433 24431  0 21:11 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
65534    24445 24431  0 21:11 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
root     24519 19229  0 21:11 pts/0    00:00:00 grep --color=auto httpd
[root@VM_0_2_centos opt]# kill -9 24431

这里 kill 是杀掉单个进程 PID,如果想杀掉全部的,需配合 awk 命令

ps -ef | grep httpd | awk ‘{print $2}’ | xargs kill -9

代码语言:javascript
复制
[root@VM_0_2_centos opt]# ps -ef | grep httpd
root     26267 26194  0 21:15 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
65534    26269 26267  0 21:15 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
65534    26270 26267  0 21:15 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
65534    26273 26267  0 21:15 ?        00:00:00 /opt/zbox/run/apache/httpd -k start
root     26358 19229  0 21:15 pts/0    00:00:00 grep --color=auto httpd
[root@VM_0_2_centos opt]# ps -ef | grep httpd | awk '{print $2}' | xargs kill -9
kill: sending signal to 26652 failed: No such process
[root@VM_0_2_centos opt]# ps -ef | grep httpd
root     26664 19229  0 21:15 pts/0    00:00:00 grep --color=auto httpd
[root@VM_0_2_centos opt]#

参数说明

  • ps -ef 是 linux 里查看所有进程的命令。
  • grep httpd 所有含有关键字 ”httpd” 的进程
  • awk ‘{print $2}’ 输出第二列的PID
  • xargs 是将获取到的多个PID标准输入转为命令行参数。
  • kill -9 杀掉xargs获取到的对应的PID

如果能准确知道进程名称,可以直接用 killall 和 pkill ,如果是模糊匹配进程名称,就用最后一个

ps -ef | grep 进程名称 | awk ‘{print $2}’ | xargs kill -9

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 杀进程几种方式
  • killall
  • pkill
  • kill
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档