文章目录
- 一、前言
- 文章来由
- 其他命令
- 二、命令区别表
- 三、最后总结
- 相同点
- 不同点
一、前言
文章来由
网上搜过很多信息,99%都是一句“他们之间的用法差不多”一概而过,我都纳闷了,我过来就是为了知道这几个命令之间的区别,“差不多”我还查什么?【果然还是“自己动手、丰衣足食”啊】只要是不一样的单词,他们之间肯定是有区别的,我经过各种百度、谷歌,整理出了下面一张表,仅供大家参考。
其他命令
这里关于基础命令kill和GUI命令xkill就不做整理了:前者大家都知道,是Linux中的基础关闭进程的命令,通常用法是kill -9 PID;后者是基于GUI图形化的关闭进程命令(例如X-Windows桌面环境),未安装图形化的Linux系统理论上将无法正常使用xkill命令。
二、命令区别表
| 常用项 | killall | pkill | skill |
|---|---|---|---|
| 基础语法 | killall [发送讯号] [选项] name | pkill [发送讯号] [选项] name | skill [发送讯号] [选项] [选择程序的规则] |
| 命令作用 | 按照精确进程名杀死进程 | 按照检索进程名杀死进程 | 发送指定讯号给正在执行的进程 |
| 命令优势 | 基于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 -lkill -L | skill -lskill -L |
| 常用操作 | killall -9 java | pkill javapkill -9 java | skill -KILL java |
| 终端操作 | —— | pkill -9 -t tty1pkill -9 -t pts/1 | —— |
| 用户操作 | killall -u username | pkill -u UIDpkill -u username | skill -STOP -u username |
| 用户进程操作 | killall -9 -u username -r java | pkill -9 java -u UIDpkill -9 java -u username | —— |
三、最后总结
相同点
所有杀进程的命令,包括kill及xkill在内,都是向指定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的过时版本,官方建议改用以上killall和pkill命令来代替。 - 总结:通常
kill命令足够日常使用,配合ps -ef、awk与grep命令组合使用,可以完成绝大部分用户常用的操作,如果需要杀掉指定名称的进程,建议直接使用killall命令,这个命令也是为了这个作用而诞生的,如果需要杀掉指定终端等操作,则建议使用pkill命令,三者是互相弥补的关系,并不是网上从命令大全或命令手册里复制粘贴而来的一句“用法差不多”而论的,用法确实相差不大,但我们要知道的是区别、而不是用法!【我个人用的最多的还是kill和killall两个命令,偶尔用pkill命令来踢出其他在登录的会话终端用户,如果对你有所帮助,还望点个一键三连,哈哈~~~】
最后
以上就是悲凉雪碧最近收集整理的关于一表理解killall、pkil和skill的真正差异区别一、前言二、命令区别表三、最后总结的全部内容,更多相关一表理解killall、pkil和skill内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复