Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。本文主要介绍Linux killall 命令。

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可能无法正确匹配它们。

推荐文档