Linux中的Pkill命令

时间:2020-03-05 15:29:10  来源:igfitidea点击:

本文介绍Linux'pkill'命令的基础。

“ pkill”是一个命令行实用程序,可以根据给定的标准将信号发送到正在运行的程序的进程。
可以通过进程的全名或者部分名,运行进程的用户或者其他属性来指定进程。

“ pkill”命令是“ procps”(或者“ procps-ng”)软件包的一部分,该软件包已预装在几乎所有Linux发行版中。
'pkill'是基本的'pgrep'程序的包装器,该程序仅打印匹配进程的列表。

如何使用“ pkill”命令

'pkill'命令的语法如下:

pkill [OPTIONS] <PATTERN>

使用扩展的正则表达式指定匹配的“ <PATTERN>”。

当不带任何选项调用时,“ pkill”将向与给定名称匹配的所有正在运行的程序的PID发送“ 15”(“ TERM”)信号。
例如,要正常停止所有firefox进程,可以运行:

pkill -9 firefox

当至少一个正在运行的进程与请求的名称匹配时,该命令将返回“ 0”。
否则,退出代码为'1'。

在编写shell脚本时,这很有用。

要将不同的信号发送到匹配的进程,请使用“ --signal”选项调用“ pkill”命令,然后输入数字或者符号信号名称。
发送信号的另一种方法是运行“ pkill”,然后运行带有连字符('-')前缀的信号名称或者数字。

使用“ kill -l”命令列出所有可用信号。

最常用的信号是:

  • '1'('HUP'):重新加载进程。
  • '9'('KILL'):杀死一个进程。
  • '15'('TERM'):正常停止一个进程。

可以用三种不同的方式指定信号:

  • 使用数字(例如-1)
  • 带有“ SIG”前缀(例如-SIGHUP)
  • 不带“ SIG”前缀(例如-HUP)。

例如,要重新加载Nginx进程,我们将运行:

pkill -HUP nginx

'pkill'使用正则表达式来匹配进程名称。
在将信号发送给它们之前,最好先使用“ pgrep”命令打印匹配的过程。
例如,列出名称中包含“ ssh”的所有进程:

1039 sshd
2257 ssh-agent
6850 ssh
31279 ssh-agent

如果只想向名称与搜索模式完全相同的进程发送信号,则可以使用:

pkill '^ssh$'

插入符号('^')字符在字符串的开头匹配,而美元'$'在结 tail。

默认情况下,“ pkill”仅与进程名称匹配。
当使用“ -f”选项时,该命令将与完整的参数列表匹配。
如果命令包含空格,请用引号将整个命令引起来:

pkill -9 -f "ping 8.8.8.8"

使用'-u'选项告诉'pkill'匹配给定用户正在运行的进程:

pkill -u mark

要指定多个用户,请用逗号分隔其名称:

pkill -u mark,danny

我们还可以组合选项和搜索模式。
例如,要发送“ KILL”信号,请输入在用户“ mark”下运行并且名称中包含“ gnome”的所有进程:

pkill -9 -u mark gnome

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

例如,要杀死最近创建的屏幕:

pkill -9 -n screen