myfreax
ps

Linux Pkill命令搜索进程并kill进程

pkill是一个命令行程序,用于与正则表达式匹配的进程发送信号

3 min read
By myfreax
Linux Pkill命令搜索进程并kill进程
Linux Pkill命令搜索进程并kill进程

pkill是一个命令行程序,用于与正则表达式匹配的进程发送信号。可以通过进程的全名或部分名,运行进程的用户或其他属性来指定进程。

本教程介绍Linux pkill命令的基础。pkill命令是procpsprocps-ng软件包的一部分。

几乎所有Linux发行版都已预安装pkill命令。 pkillpgrep命令的再次封装,但pgrep仅打印匹配进程的列表。

pkill命令选项

pkill命令的语法是pkill [OPTIONS] <PATTERN><PATTERN>使用的是扩展的正则表达。

在不带任何选项运行pkill命令时,pkill将终止信号发送给与指定正则表达式匹配的进程PID。例如,要正常停止所有Firefox进程,可以运行命令pkill -9 firefox

当至少一个正在运行的进程与正则表达式匹配时,pkill命令退出代码返回0。 否则,退出代码1。 这在编写shell脚本时很有用。

pkill -9 firefox

进程信号 signal

要将不同的信号发送到正则表达式匹配的进程,请使用--signal选项运行pkill命令,后跟信号数字。

发送信号的另一种方法是运行pkill,后跟信号名称或以连字符-开头的数字。使用kill -l命令列出所有可用信号。

最常用的信号是包括1/HUP重新加载进程。9/KILL杀死进程。15/TERM正常停止进程。

可以用三种不同的方式指定信号,第一种是使用带SIG前缀的数字,例如-1。第二种不带SIG前缀,例如-HUP

假设你需要重新加载Nginx 进程,可以运行命令pkill -HUP nginx

pkill -HUP nginx

pkill使用正则表达式来匹配进程名称。在将信号发送给它们之前,最好先使用pgrep命令打印匹配的进程。

例如,列出所有包含ssh的进程,如果您只想向名称与搜索模式完全相同的进程发送信号,则可以运行命令pkill '^ssh$'

^ 符号表示匹配行首,而美元$则匹配行尾。^ssh$表示完整匹配ssh。

pgrep '^ssh$'
pkill '^ssh$'
1039 sshd
2257 ssh-agent
6850 ssh
31279 ssh-agent

搜索进程

默认情况下,pkill仅与进程名称匹配。当使用-f选项时,pkill命令将会匹配进程启动参数列表

如果pkill命令中包含空格,请用引号将整个命令括起来。例如命令pkill -9 -f "ping 8.8.8.8"

除了可以匹配进程名称和进程启动参数之外,还可以使用-u选项匹配指定用户运行的进程,要指定多个用户,请用逗号分隔其名称。

pkill -9 -f "ping 8.8.8.8"
pkill -u mark
pkill -u mark,danny

您还可以组合选项和搜索模式。例如要发送KILL信号给gnome和mark用户启动进程,则可以没命令pkill -9 -u mark gnome

要仅显示最远(最旧)或最近(最新)启动的进程,请使用-n(代表最新)或-o(代表最老)选项。

例如命令pkill -9 -n screen,将会kill掉最近创建的screen进程。

pkill -9 -u mark gnome
pkill -9 -n screen

结论

pkill命令用于与正则表达式匹配的进程发送信号。有关pkill命令的更多信息,请访问pkill man页面或在终端中输入man pkill

如果您有任何问题或反馈,请随时发表评论。

Related Articles