内容纲要
pkill
命令是 Linux 系统中用于发送信号到进程的一个工具,它通过名称、用户、终端等属性来匹配进程。这使得它非常适合用来批量处理那些符合特定模式的进程,而不需要知道这些进程的精确进程号(PID)。
详细介绍
pkill
命令的基本语法是:
pkill [options] <pattern>
其中 <pattern>
是你想要匹配的进程名称或其他属性的模式。
Linux 上 pkill --help
pkill --help
Usage:
pkill [options] <pattern>
Options:
-<sig>, --signal <sig> signal to send (either number or name)
-q, --queue <value> integer value to be sent with the signal
-e, --echo display what is killed
-c, --count count of matching processes
-f, --full use full process name to match
-g, --pgroup <PGID,...> match listed process group IDs
-G, --group <GID,...> match real group IDs
-i, --ignore-case match case insensitively
-n, --newest select most recently started
-o, --oldest select least recently started
-O, --older <seconds> select where older than seconds
-P, --parent <PPID,...> match only child processes of the given parent
-s, --session <SID,...> match session IDs
-t, --terminal <tty,...> match by controlling terminal
-u, --euid <ID,...> match by effective IDs
-U, --uid <ID,...> match by real IDs
-x, --exact match exactly with the command name
-F, --pidfile <file> read PIDs from file
-L, --logpidfile fail if PID file is not locked
-r, --runstates <state> match runstates [D,S,Z,...]
--ns <PID> match the processes that belong to the same
namespace as <pid>
--nslist <ns,...> list which namespaces will be considered for
the --ns option.
Available namespaces: ipc, mnt, net, pid, user, uts
-h, --help display this help and exit
-V, --version output version information and exit
For more details see pgrep(1).
常用选项
-signal
:指定要发送的信号,默认为 SIGTERM(终止信号)。例如,pkill -HUP <pattern>
会发送 SIGHUP 信号。-u
:按用户名或用户 ID 过滤进程。例如,pkill -u username
会杀掉属于username
用户的所有进程。-f
:使用完整的命令行进行匹配,而不仅仅是进程名称。-n
:只对最新启动的进程进行操作。-o
:只对最旧的进程进行操作。-v
:反转匹配,即操作那些不匹配模式的进程。
使用实例
-
杀死所有名为 'firefox' 的进程:
pkill firefox
-
发送重启信号给所有 SSH 进程:
pkill -HUP sshd
-
杀死所有用户 'bob' 的进程:
pkill -u bob
-
使用完整命令行匹配杀死进程:
pkill -f '/usr/bin/python my_script.py'
pkill
是一个非常强大的工具,能够方便地管理系统中的进程。使用时需要谨慎,因为错误的模式匹配可能导致意外的进程被杀死。在实际应用中,建议先使用 pgrep
(与 pkill
类似,但只列出匹配的进程 ID 而不发送信号)来测试模式匹配,确保匹配结果正确无误后再使用 pkill
。