Linux 常用命令 -pkill【通过进程名或其他属性来发送信号给一个或多个进程】
简介
pkill 来自 “process kill”,意为进程终止。它允许你通过进程名或其他属性来发送信号给一个或多个进程,而无需手动查找进程 ID (PID)。pkill 命令在需要批量终止进程或根据特定条件终止进程时非常有用。 其原理是根据给定的模式匹配进程名,然后向匹配到的进程发送指定的信号(默认为 SIGTERM)。
使用方式
pkill [options] pattern
常用选项
-<signal>, --signal <signal>
:指定要发送给每个匹配进程的信号。可以使用信号的数字值或符号名称。-c, --count
:抑制正常输出,转而打印匹配到的进程数量。如果匹配数量为零(即没有匹配到任何进程),命令将返回非零值。-e, --echo
:显示被终止进程的PID
或名称。-f, --full
:通常情况下,搜索模式只匹配进程名称。使用此选项后,搜索模式会匹配完整的命令行。-g, --pgroup pgrp,...
:仅匹配属于指定进程组 ID 的进程。进程组 ID 0 特指 pkill 命令自身的进程组。-G, --group gid,...
:仅匹配其真实组 ID 在指定列表中的进程。可以使用组 ID 的数字值或符号名称。-i, --ignore-case
:匹配进程时忽略大小写。-n, --newest
:在匹配到的进程中,仅选择启动时间最新(最近)的一个。-o, --oldest
:在匹配到的进程中,仅选择启动时间最早(最先启动)的一个。-O, --older secs
:选择启动时间早于指定secs
秒的进程。-P, --parent ppid,...
:仅匹配父进程 ID 在指定列表中的进程。-s, --session sid,...
:仅匹配会话 ID 在指定列表中的进程。会话 ID 0 特指pkill
自身的会话 ID。-t, --terminal term,...
:仅匹配其控制终端在指定列表中的进程。终端名无需带上/dev/
前缀。-u, --euid euid,...
:仅匹配有效用户 ID 在指定列表中的进程。可以使用用户 ID 的数字值或符号名称。-U, --uid uid,...
:仅匹配真实用户 ID 在指定列表中的进程。可以使用用户 ID 的数字值或符号名称。-x, --exact
:仅匹配进程名称(如果使用了-f
选项,则匹配命令行)与搜索模式完全一致的进程。-F, --pidfile file
:从指定文件file
中读取PID
。-L, --logpidfile
:如果PID
文件(见-F
选项)未被锁定,则指令执行失败。-r, --runstates D,R,S,Z,...
:仅匹配处于指定状态的进程。--ns pid
:匹配与指定PID
属于相同命名空间的进程。若要匹配其他用户的进程,需要以root
身份运行。--nslist name,...
:仅匹配指定类型的命名空间。可用的命名空间类型包括:ipc
,mnt
,net
,pid
,user
,uts
。-V, --version
:显示版本信息。-h, --help
:显示帮助信息。
pattern
该操作数用于指定一个拓展正则表达式来匹配进程名或命令行。
返回值
0
:成功匹配并发送信号到一个或多个进程。1
:没有进程被匹配到或无法向其发送信号。2
:命令行语法错误。3
:致命错误,例如内存不足等。
参考示例
终止所有名为 test 的进程
pkill test
根据完整命令行终止进程
pkill -f "top -d 5"
仅终止以 top -d 5
命令行指令启动的进程。
匹配进程时忽略大小写
pkill -i TOP
加入 -i
选项后会无视所给名称的大小写区别,在此例中同样会终止 top
进程。
显示要终止的进程名和 PID
pkill -e top
使用 -e
后会输出终止的进程名和 PID,同时如果终止失败,也同样会显示出失败信息:
jay@jaylinuxlenovo:~/test$ pkill -e top
pkill: killing pid 727 failed: Operation not permitted
pkill: killing pid 169325 failed: Operation not permitted
top killed (pid 699820)
显示要终止的进程数量
pkill -c top
使用 -c
选项显示 pkill
匹配到的进程数量,即使终止失败,也会将其统计入最终数量中:
jay@jaylinuxlenovo:~/test$ pkill -c top
pkill: killing pid 727 failed: Operation not permitted
pkill: killing pid 169325 failed: Operation not permitted
4
注意事项
- 在使用
-c
选项时的计数是指匹配到的进程数量,而不是成功发送信号的进程数量。 - 默认情况下,用于匹配的进程名称仅限于
/proc/pid/stat
中显示的前 15 个字符。如果你需要匹配完整的命令行,请使用-f
选项(它会匹配/proc/pid/cmdline
文件中的内容)。 - 僵尸进程也会被匹配到。