我是靠谱客的博主 悲凉雪碧,最近开发中收集的这篇文章主要介绍一表理解killall、pkil和skill的真正差异区别一、前言二、命令区别表三、最后总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 一、前言
    • 文章来由
    • 其他命令
  • 二、命令区别表
  • 三、最后总结
    • 相同点
    • 不同点

一、前言

文章来由

网上搜过很多信息,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命令来踢出其他在登录的会话终端用户,如果对你有所帮助,还望点个一键三连,哈哈~~~】

最后

以上就是悲凉雪碧为你收集整理的一表理解killall、pkil和skill的真正差异区别一、前言二、命令区别表三、最后总结的全部内容,希望文章能够帮你解决一表理解killall、pkil和skill的真正差异区别一、前言二、命令区别表三、最后总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部