【killall】Centos/Linux killall命令详细介绍
简介
系统版本:Centos7.6
killall 命令,最大的特征就是可以以名字的方式杀死进程,类似的命令有 pkill 命令,与 kill 命令相比有一定的优势,kill 命令需要配合 ps 命令来使用才能更好地杀死进程。下面说一下 killall 命令的一些特性:
- killall 可以将一条指定的信号发送给任意指定命令的进程。若没有指定信号,则发送SIGTERM。
- 信号可以以名字指定(如:-HUP 或者 -SIGHUP)也可以按数字指定(如:-1)或者使用选项 -s。
- 如果命令名(killall 和选项后面跟的东西)不是正则表达式(选项 -r)并且包含斜杠(/),那么执行该特定文件的进程将被杀掉,这与进程名无关。
- 如果每个列出的命令至少杀死了一个进程,或者未列出任何命令并且至少有一个进程与 -u 和 -Z 搜索条件匹配,则 killall 返回0。 否则,killall 返回非零
- killall 进程永远不会杀死自己(但可能会杀死其他 killall 进程)
基础语法
bash
> killall [option] 进程名
选项介绍
选项 | 选项说明 |
---|---|
-e,--exact | 对于很长的名字,要求准确匹配。如果一个命令名长于 15 个字符,, 则可能不能用整个名字 (溢出了)。在这种情况下,killall 会杀死所有匹配名字前 15 个字符的所有进程。有了 -e 选项,这样的记录将忽略。如果同时指定了 -v 选项,killall 会针对每个忽略的记录打印一条消息 |
-I,--ignore-case | 是否匹配不区分大小写的进程名称 |
-g,--process-group | 杀死属于该进程组的进程。kill 信号给每个组只发送一次,即使同一进程组中包含多个进程 |
-i,--interactive | 交互方式,在杀死进程之前征求确认信息 |
-l,--list | 列出所有已知的信号名 |
-o,--older-than | 仅匹配最旧的进程。时间以浮点数表达,然后指定为单位。 单位为 s、m、h、d、w、M、y,分别表示秒、分钟、小时、天、周、月和年 |
-q,--quiet | 如果没有进程杀死, 不会提出警告 |
-r,--regexp | 将进程名称模式解释为扩展的正则表达式。 |
-s,--signal | 指定发送信号,详细请看Linux信号的行为说明 |
-u,--user | 杀死指定用户拥有的进程,选择该选项后命令名是可选的 |
-v,--verbose | 报告信号是否成功发送 |
-V,--version | 显示版本信息 |
-w,, --wait | 等待所有杀的进程死去。killall 会每秒检查一次是否任何被杀的进程仍然存在,仅当都死光后才返回。请注意,如果信号被忽略或没有起作用,或者进程停留在僵尸状态,killall 可能会永久等待 |
-y,--younger-than | 仅匹配最新的进程。 时间以浮点数表达,然后指定为单位。单位为 s、m、h、d、w、M、y,分别表示秒、分钟、小时、天、周、月和年 |
-Z,--context | 指定安全内容(仅限 SELinux):仅杀死具有与给定扩展正则表达式模式匹配的安全内容的进程。必须位于命令行上的其他参数之前,选择该选项后命令名是可选的 |
基本用法
1、列出可杀进程
bash
> killall -l
2、查看 killall 版本
bash
> killall -V
> killall --version
3、杀死进程(以sshd为例)
bash
> killall -9 sshd # 杀死 sshd 进程
注意事项
1、以文件方式杀死只对那些在执行时一直打开的可执行文件起作用,即, 混杂的可执行文件不能够通过这种方式杀死。
2、输入 killall name 可能对非 Linux 系统没有效果,尤其是当由特权用户执行时。
3、在两次扫描的间隙,如果进程消失了而被代之以一个有同样 PID 的新进程,killall -w 将侦测不到。
4、如果进程更改其名称,killall 可能无法正确匹配它们。
5、killall 可以在命令行上进行名称限制。 这个数字的大小是无符号长整数型的8倍。 对于大多数32位系统,限制为32位字符,同样,对于64位系统,限制通常为64位字符。