前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux随笔】Killall 、Kill 、Pkill三个命令之间的区别

【Linux随笔】Killall 、Kill 、Pkill三个命令之间的区别

原创
作者头像
浩Coding
修改2021-06-30 11:15:39
5.1K0
修改2021-06-30 11:15:39
举报
文章被收录于专栏:浩Coding

首先三个命令都是用于杀掉进程的,不过kill是杀掉单个进程killall是杀掉所有同名进程pkill是杀掉一类进程或者某个用户的所有进程

一、kill命令

kill 命令的用途

kill 命令很容易让人产生误解,以为它仅仅就是用来杀死进程的。我们来看一下 man page 对它的解释:kill - send a signal to a process.从官方的解释不难看出,kill 是向进程发送信号的命令。当然我们可以向进程发送一个终止运行的信号,此时的 kill 命令才是名至实归。事实上如果我们不给 kill 命令传递信号参数,它默认传递终止进程运行的信号给进程!这是 kill 命令最主要的用法,也是本文要介绍的内容。

一般情况下,终止一个前台进程使用 Ctrl + C 就可以了。对于一个后台进程就得用 kill 命令来终止。我们会先使用 ps、top 等命令获得进程的 PID,然后使用 kill 命令来杀掉该进程。

kill 命令格式

使用kill -l命令列出所有可用的信号。

最常被使用的信号是1/9/15:

代码语言:javascript
复制
1(HUP):重新加载进程。
9 (KILL):杀死进程。
15(TERM):完美地停止一个进程。
kill pid //同下-15默认的安全停止进程
kill -15 pid //
kill -9 pid  //彻底杀死进程

使用信号 15 是安全的,而信号 9 则是处理异常进程的最后手段,这样结束掉的进程不会进行资源的清理工作,所以如果你用它来终结掉 vim 的进程,就会发现临时文件 *.swp 没有被删除。

二、killall命令

Linux killall (kill processes by name)用于杀死进程,与 kill 不同的是killall 会杀死指定名字的所有进程。kill 命令杀死指定进程 PID,需要配合 ps 使用,而 killall 直接对进程对名字进行操作,更加方便。

代码语言:javascript
复制
killall -9 mysql         //结束所有的 mysql 进程

三、pkill命令

pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程,除此之外,pkill 还有一个更重要的功能,即按照终端号来踢出用户登录。

代码语言:javascript
复制
pkill mysql         //结束 mysql 进程
pkill -u mark,danny //结束mark,danny用户的所有进程
w  //#使用w命令查询本机已经登录的用户
pkill -9 -t pts/1  //#强制杀死从pts/1虚拟终端登陆的进程

四、拓展命令

如果能看懂下面一系列命令,那么killall 、kill 、pkill三个命令之间的区别你也就了然于胸了。

1、pgrep命令:专门显示进程的进程号,相当于:

代码语言:javascript
复制
ps -aux | grep 进程名 | grep -v grep| awk '{print $2}' 

2、pidof命令:pid of xx进程,显示进程的进程号,同上pgrep。

3、组合命令的使用:

代码语言:javascript
复制
pgrep mysql | xargs kill -s 9
ps -ef | grep mysql | grep -v grep | awk '{print $2}' | xargs kill -9
kill -s 9 `pgrep mysql`

看到上面这三条命令的转换想到了什么吗,联想下pkill命令:pkill=pgrep+kill

pkill与kill在这点的差别是:pkill无须 “s”,终止信号等级直接跟在 “-“ 后面。之前我一直以为是 “-s 9”,结果每次运行都无法终止进程。

killall和pkill是相似的,不过如果给出的进程名不完整,killall会报错。pkill或者pgrep只要给出进程名的一部分就可以终止进程。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、kill命令
  • 二、killall命令
  • 三、pkill命令
  • 四、拓展命令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档