一表理解killall、pkil和skill的真正差异区别

8 篇文章 0 订阅
1 篇文章 0 订阅

一、前言

文章来由

网上搜过很多信息,99%都是一句“他们之间的用法差不多”一概而过,我都纳闷了,我过来就是为了知道这几个命令之间的区别,“差不多”我还查什么?【果然还是“自己动手、丰衣足食”啊】只要是不一样的单词,他们之间肯定是有区别的,我经过各种百度、谷歌,整理出了下面一张表,仅供大家参考。

其他命令

这里关于基础命令kill和GUI命令xkill就不做整理了:前者大家都知道,是Linux中的基础关闭进程的命令,通常用法是kill -9 PID;后者是基于GUI图形化的关闭进程命令(例如X-Windows桌面环境),未安装图形化的Linux系统理论上将无法正常使用xkill命令。

二、命令区别表

常用项killallpkillskill
基础语法killall [发送讯号] [选项] namepkill [发送讯号] [选项] nameskill [发送讯号] [选项] [选择程序的规则]
命令作用按照精确进程名杀死进程按照检索进程名杀死进程发送指定讯号给正在执行的进程
命令优势基于kill的一个结束进程命令,对比pkill来说有着相对更好的安全性。与pgrep深度配对,从而使其支持正则表达式及其他筛选匹配模式。可以对正在运行的进程在不同的讯号间转换,同样也支持杀死进程。
执行逻辑killall是向所有符合名称的进程,基于kill来向指定进程名称发送SIGINT、SIGTERM或SIGKILL信号来操作进程程序的命令。pkill是一个与pgrep配套的命令,当你执行pkill时,实际上内部加入了pgrep语法,当然也可以由用户手动编写pgrep语法。skill为过时命令,随时可能弃用且使用用户并不多,主要用于将正在运行的进程按照1:HUP、9:KILL、15:TERM或19:STOP等常用讯号操作进程
简单区别killall默认采用精确进程名称来关闭进程,因而更加稳定安全,但通常只适用于进程名称。pkill默认使用pgrep检索并筛选进程名称,因此相对容易造成误杀,不过自由度更高,例如可踢出指定终端用户等操作。skill主要用于向进程发送讯号或报告反馈进程的状态所用,因其已过时通常不建议使用此命令。
列出讯号killall -l同:
kill -l
kill -L
skill -l
skill -L
常用操作killall -9 javapkill java
pkill -9 java
skill -KILL java
终端操作——pkill -9 -t tty1
pkill -9 -t pts/1
——
用户操作killall -u usernamepkill -u UID
pkill -u username
skill -STOP -u username
用户进程操作killall -9 -u username -r javapkill -9 java -u UID
pkill -9 java -u username
——

三、最后总结

相同点

所有杀进程的命令,包括killxkill在内,都是向指定PID(进程ID)或PNAME(进程名称)的进程发送系统讯号/信号,从而完成杀进程的操作,例如常用讯号-9便是KILL/SIGKILL的系统讯号。

不同点

  • killall:从上文命令区别表能够看出,此命令通常针对进程名称进行操作,默认采用精确进程名称来关闭进程,如果传入的进程名不完整,将有可能报错,从而更加稳定安全,可以说其基于kill命令并扩展了该命令的对进程名称的批量操作,由于该命令已被移植到BSD协议,从而得到了更广泛的应用,以至于Mac OS X中都可以安装并使用该命令;
  • pkill:同样从上文命令区别表能够看出,此命令与pgrep命令配套使用,提升了其检索性能,例如支持可踢出指定终端用户可同时按照UID(用户ID)和Username(用户名)来关闭指定用户及其用户进程,自由度更高,但也因此(仅相对killall而言)容易出现误杀情况。
  • skill:此命令GUN/Linux已将其标记为obsolete and unportable标识,算是pkill的过时版本,官方建议改用以上killallpkill命令来代替。
  • 总结:通常kill命令足够日常使用,配合ps -efawkgrep命令组合使用,可以完成绝大部分用户常用的操作,如果需要杀掉指定名称的进程,建议直接使用killall命令,这个命令也是为了这个作用而诞生的,如果需要杀掉指定终端等操作,则建议使用pkill命令,三者是互相弥补的关系,并不是网上从命令大全或命令手册里复制粘贴而来的一句“用法差不多 ”而论的,用法确实相差不大,但我们要知道的是区别、而不是用法!【我个人用的最多的还是killkillall两个命令,偶尔用pkill命令来踢出其他在登录的会话终端用户,如果对你有所帮助,还望点个一键三连,哈哈~~~】
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值