首页>>帮助中心>>香港云服务器Killall 、Kill 、Pkill三个命令之间的区别

香港云服务器Killall 、Kill 、Pkill三个命令之间的区别

2024/9/13 244次

香港云服务器Killall 、Kill 、Pkill三个命令之间的区别

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

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

2. kill 命令格式
使用kill -l命令列出所有可用的信号。
最常被使用的信号是1/9/15:
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 直接对进程对名字进行操作,更加方便。
killall -9 mysql //结束所有的 mysql 进程

三、pkill命令
pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程,除此之外,pkill 还有一个更重要的功能,即按照终端号来踢出用户登录。
pkill mysql //结束 mysql 进程 pkill -u mark,danny //结束mark,danny用户的所有进程 w //#使用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只要给出进程名的一部分就可以终止进程。


一诺网络香港免备案专区,提供「香港增强云服务器」和「香港特惠云服务器」两种类型的高可用弹性计算服务,搭载新一代英特尔®至强®铂金处理器,接入CN2低延时高速回国带宽线路,网络访问顺滑、流畅。机房网络架构采用了BGP协议的解决方案可提供多线路互联融合网络,使得不同网络运营商线路的用户都能通过最佳路由实现快速访问。香港云服务器低至29元/月,购买链接:https://www.enuoidc.com/vps.html?typeid=2