我是靠谱客的博主 悲凉雪碧,最近开发中收集的这篇文章主要介绍一表理解killall、pkil和skill的真正差异区别一、前言二、命令区别表三、最后总结,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- 一、前言
- 文章来由
- 其他命令
- 二、命令区别表
- 三、最后总结
- 相同点
- 不同点
一、前言
文章来由
网上搜过很多信息,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 -l kill -L | skill -l skill -L |
常用操作 | killall -9 java | pkill java pkill -9 java | skill -KILL java |
终端操作 | —— | pkill -9 -t tty1 pkill -9 -t pts/1 | —— |
用户操作 | killall -u username | pkill -u UID pkill -u username | skill -STOP -u username |
用户进程操作 | killall -9 -u username -r java | pkill -9 java -u UID pkill -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的真正差异区别一、前言二、命令区别表三、最后总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复