1、命令简介
killall:用于根据进程名杀死所有匹配的进程。特别是当你想要一次性终止多个具有相同名称的进程时。
2、命令语法
killall [-Z,--context pattern] [-e,--exact] [-g,--process-group] [-i,--interactive] [-q,--quiet] [-r,--regexp] [-s,--signal signal] [-u,--user user] [-v,--verbose] [-w,--wait] [-I,--ignore-case] [-V,--version] [--] name ... killall -l killall -V,--version
3、命令描述
killall
命令向运行任何指定命令的所有进程发送信号。如果没有指定信号名称,则发送 SIGTERM 信号。
信号可以通过名称(例如 -HUP
)或数字(例如 -1
)或选项 -s
来指定。
如果命令名称不是正则表达式(选项 -r
),并且包含斜杠(/),那么执行该特定文件的进程将被选择进行终止,与它们的名称无关。
如果至少有一个进程已被终止以满足每个列出的命令,或者未列出任何命令并且至少有一个进程匹配 -u
和 -Z
搜索条件,则 killall
返回零返回码。否则,killall
返回非零值。
killall
进程永远不会终止自身(但可能会终止其他 killall 进程)。
4、命令选项
选项 | 描述 |
-e, --exact | 要求精确匹配非常长的名称。 如果命令名称超过 15 个字符, 完整名称可能不可用(即已交换出)。 在这种情况下, killall 将终止与前 15 个字符匹配的所有内容。 使用 -e,跳过这些条目。如果另外还使用了 -v, 则 killall 会为每个跳过的条目打印一条消息。 |
-I, --ignore-case | 执行不区分大小写的进程名称匹配。 |
-g, --process-group | 终止进程所属的进程组。 仅向每个组发送一次终止信号, 即使找到了属于同一进程组的多个进程。 |
-i, --interactive | 在终止之前进行交互式确认。 |
-l, --list | 列出所有已知的信号名称。 |
-q, --quiet | 如果没有终止任何进程,则不发出警告。 |
-r, --regexp | 将进程名称模式解释为扩展正则表达式。 |
-s, --signal | 发送此信号而不是 SIGTERM。 |
-u, --user | 仅终止指定用户拥有的进程。命令名称是可选的。 |
-v, --verbose | 报告信号是否成功发送。 |
-V, --version | 显示版本信息。 |
-w, --wait | 等待所有被终止的进程死亡。 killall 每秒检查一次被终止的进程是否仍然存在,只有当没有进程剩下时才返回。请注意,如果信号被忽略、没有效果或进程处于僵尸状态,则 killall 可能会永远等待。 |
-Z, --context | (仅限 SELinux)指定安全上下文:仅终止安全上下文与给定的扩展正则表达式模式匹配的进程。必须在命令行上的其他参数之前使用。命令名称是可选的。 |
5、使用示例
1)终止指定进程名的所有进程
killall firefox
2)使用信号终止指定进程名的所有进程
killall -s SIGKILL chrome
3)终止指定用户拥有的进程
killall -u username
4)使用交互模式确认后终止进程
killall -i vim
5)列出所有已知的信号名称
killall -l
6)使用正则表达式终止匹配的进程
killall -r ".*\.txt"
7)终止进程组的所有进程
killall -g process_group_name
8)安静模式终止进程,不显示警告
killall -q process_name
注意:按文件杀死只适用于在执行过程中保持打开的可执行文件,即不纯的可执行文件不能以这种方式被杀死。
在非linux系统上输入killall name
可能不会产生预期的效果,特别是由特权用户执行时。
killall -w
不会检测一个进程是否消失,而是在扫描之间被一个具有相同PID的新进程取代。
如果进程更改了名称,killall
可能无法正确匹配它们。