帮助中心 >  产品文档 >  Killall 、Kill 、Pkill三个命令之间的区别

蓝队云小课堂:

 

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

 

一、kill命令

1. kill 命令的用途:

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

 

2. kill 命令格式

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

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

1HUP):重新加载进程。
9 (KILL):杀死进程。
15TERM):完美地停止一个进程。
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 直接对进程对名字进行操作,更加方便。

killall -9 mysql         //结束所有的 mysql 进程

 

三、pkill命令

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

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

 

四、拓展命令

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

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

ps -aux | grep 进程名 | grep -v grep| awk '{print $2}'

 

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

 

3. 组合命令的使用:

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只要给出进程名的一部分就可以终止进程。

 

更多小知识,可联系蓝队云一起探讨。

 


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: