Linux 常用命令 - killall【通过名称终止进程】

简介

killall 命令,顾名思义,是 “kill all” 的缩写,即“杀死全部”。它允许你通过进程的名称,而不是进程ID(PID),来向一个或多个进程发送信号。killall 命令简化了向多个具有相同名称的进程发送信号的过程,无需手动查找每个进程的PID。

使用方式

killall [-Z, --context pattern] [-e, --exact] [-g, --process-group] [-i, --interactive] [-n, --ns PID] [-o, --older-than TIME] [-q, --quiet] [-r, --reg‐exp] [-s, --signal SIGNAL, -SIGNAL] [-u, --user user] [-v, --verbose] [-w, --wait] [-y, --younger-than TIME] [-I, --ignore-case] [-V, --version] [--] name ...
killall -l
killall -V, --version

常用选项

  • -e, --exact:精确匹配长进程名(命令名)。如果进程名超过15个字符,那么可能无法获取完整的进程名。这种情况下,killall 默认会终止名称与前15个字符匹配的进程,而使用了 -e 后上述进程就会被忽略。此时如果使用了 -v 则会额外输出对应的忽略提示信息。
  • -I, --ignore-case:忽略进程名称的大小写差异。
  • -g, --process-group:终止对应进程所属的进程组。如果找到多个进程并且属于同一个进程组,对于同一个进程组也只会发一次终止信号。
  • -i, --interactive:在终止进程前,交互式询问用户确认。
  • -l, --list:列出所有支持的信号名称。
  • -n, --ns:根据指定 PIDPID 命名空间匹配进程。(默认匹配所有命名空间)
  • -o, --older-than:仅终止运行时间超过指定时间的进程。时间以浮点数加单位表示,单位包括s、m、h、d、w、M、y,分别表示秒、分、时、天、周、月、年。
  • -q, --quiet:若无进程被终止,不输出错误信息。
  • -r, --regexp:将进程名模式解释为 POSIX 扩展正则表达式。
  • -s, --signal, -SIGNAL:指定要发送的信号(默认为 SIGTERM 终止信号)。
  • -u, --user:仅对指定用户拥有的进程执行操作,可省略进程名。
  • -v, --verbose:显示信号是否成功发送的详细信息。
  • -V, --version:显示版本信息。
  • -w, --wait:等待所有被终止的进程完全退出。
  • -y, --younger-than:仅终止指定时间之后启动的进程。
  • -Z, --context:根据安全上下文匹配进程,仅终止安全上下文与指定正则表达式匹配的进程。此选项需放在命令行其他参数前,且可省略进程名。

文件

  • /procproc 文件系统的位置。

参考示例

终止所有名为 test 的进程

killall test

以指定用户身份终止进程

killall -u username test

使用 -u username 选项可以指定终止 username 这个用户的 test 进程。

向某个进程发送特定信号

killall -9 test

test 进程发送 SIGKILL 信号。

终止运行超过指定时间的进程

killall -o 10m test

此处使用 -o 10m 可以终止运行超过 10 分钟的 test 进程。

终止并查看具体的终止信息

killall -v test

使用 -v 选项可以显示命令执行的详细信息:

jay@jaylinuxlenovo:~/test$ killall -v test
Killed test(3886303) with signal 15
Killed test(3886472) with signal 15

匹配进程名时忽略大小写

killall -I TEST

使用 -I 选项在匹配进程名是会忽略大小写差异:

jay@jaylinuxlenovo:~/test$ killall -I -v TEST
Killed test(3889789) with signal 15

注意事项

  • killall 会每秒检查一次目标进程是否仍在运行,直到所有进程结束才返回。若进程忽略信号、无法终止,或长时间处于僵尸状态,命令可能无限等待。

  • 通过文件终止进程仅适用于在运行期间持续打开的可执行文件,若不是一个纯粹的可执行文件(例如某些脚本在执行后会关闭,此时就无法通过脚本名来匹配到进程),则无法被这样终止。

  • 在一个非 Linux 系统中,killall 可能与预想的行为不符,尤其是在特权用户下使用。

  • killall -w 在等待期间不会去检测是否存在原进程消失且其 PID 被新进程使用的情况。这就有可能导致 killall 被无限挂起或者误杀新创建的无关进程。

  • 如果一个进程在运行期间修改了名字,则 killall 可能会无法正确匹配到这个进程。

  • killall 支持通过命令行指定的名称数量有限,遵循 限制值 = (系统位数对应的 unsigned long 大小 × 8) 的规则,即对大多数 32 位系统来说这个限制值为 32,同样的,对于 64 位系统来说这个值通常为 64。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WKJay_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值