手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

pgrep(1)

名称

pgrep, pkill - 通过名称及其他属性查找进程或发送进程信号

用法概要

pgrep [-flvx] [-n | -o] [-d delim] [-P ppidlist] 
     [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] 
     [-G gidlist] [-J projidlist] [-t termlist] 
     [-T taskidlist] [-c ctidlist] [-z zoneidlist] 
     [pattern]
pkill [-signal] [-fvx] [-n | -o] [-P ppidlist] 
     [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] 
     [-G gidlist] [-J projidlist] [-t termlist] 
     [-T taskidlist] [-c ctidlist] [-z zoneidlist] 
     [pattern]

描述

Pgrep 实用程序检查系统上的活动进程,并报告属性与命令行中指定标准相匹配的进程 ID。每个进程 ID 打印为一个十进制值,并通过分隔符与下个 ID 分隔,其缺省为换行符。对于每个属性选项,用户可以在命令行上指定一组可能值,由逗号分隔。例如,

pgrep -G other,daemon

与其真实组 ID 为 other OR daemon 的进程相匹配。如果指定多个标准选项,pgrep 与其属性符合标准选项的逻辑 AND 的进程相匹配。例如,

pgrep -G other,daemon -U root,daemon

与其属性为以下项的进程相匹配:

(真实组 ID 为 other OR daemonAND
(真实用户 ID 为 root OR daemon

Pkillpgrep 功能几乎相同,除了由 kill(1) 向每个匹配进程发送信号,而不是打印其进程 ID。信号名称或数字可以指定为 pkill 的第一个命令行选项。

选项

支持以下选项:

–c ctidlist

仅与其合同 ID 位于列表中的进程相匹配。

–d delim

指定要在每个匹配进程 ID 之间打印的输出分隔符字符串。如果没有指定 –d 选项,缺省值为换行符。–d 选项仅当指定为 pgrep 的选项时才有效。

–f

常规表达模式应与完整进程参数字符串匹配(从 /proc/nnnnn/psinfo 文件的 pr_psargs 字段获取)。如果没有指定 –f 选项,表达模式仅匹配可执行文件的名称(从 /proc/nnnnn/psinfo 文件的 pr_fname 字段获取)。

–g pgrplist

仅与其组 ID 位于给定列表中的进程相匹配。如果组 0 包括在列表中,则解释为 pgreppkill 进程的组 ID。

–G gidlist

仅与其真实组 ID 位于给定列表中的进程相匹配。每个组 ID 可以指定为组名或数字组 ID。

–J projidlist

仅与其项目 ID 位于给定列表中的进程相匹配。每个项目 ID 可以指定为项目名或数字项目 ID。

–l

长输出格式。打印每个匹配进程的名称和进程 ID。根据是否指定 –f 选项(请参见上文),从 pr_psargspr_fname 字段获取进程名。–l 选项仅当指定为 pgrep 的选项时才有效。

–n

仅与符合所有其他指定匹配标准的最新(最新创建的)进程相匹配。不能和选项 –o 同时使用。

–o

仅与符合所有其他指定匹配标准的最旧(最早创建的)进程相匹配。不能和选项 –n 同时使用。

–P ppidlist

仅与其父进程 ID 位于给定列表中的进程相匹配。

–s sidlist

仅与其进程会话 ID 位于给定列表中的进程相匹配。如果 ID 0 包括在列表中,则解释为 pgreppkill 进程的会话 ID。

–t termlist

仅匹配与给定列表中的终端相关联的进程。每个终端将指定为 /dev 中终端设备路径名 "dev/" 的后缀。例如,term/apts/0

–T taskidlist

仅与其任务 ID 位于给定列表中的进程相匹配。如果 ID 0 包括在列表中,则解释为 pgrep pkill 进程的任务 ID。

–u euidlist

仅与其有效用户 ID 位于给定列表中的进程相匹配。每个用户 ID 可以指定为登录名或数字用户 ID。

–U uidlist

仅与其真实用户 ID 位于给定列表中的进程相匹配。每个用户 ID 可以指定为登录名或数字用户 ID。

–v

逆向读取匹配。匹配所有进程,除了符合指定匹配标准的进程。

–x

仅将其参数字符串或可执行文件名与指定模式完全匹配的进程视为匹配进程。当进程参数字符串或可执行文件名中的所有字符都与模式匹配时,才将该模式匹配视为完全匹配。

–z zoneidlist

仅与其区域 ID 位于给定列表中的进程相匹配。每个区域 ID 可以指定为区域名或数字区域 ID。此选项仅在全局区域中执行时有效。如果 pkill 功能用于向其他区域中的进程发送信号,该进程必须已声明 {PRIV_PROC_ZONE} 特权(请参见 privileges(5))。

signal

指定发送到每个匹配进程的信号。如果未指定信号,将缺省发送 SIGTERM。signal 的值可以是 signal.h(3HEAD) 中定义的一个符号名称,没有 SIG 前缀,或者是对应信号数字的十进制值。signal 选项仅当指定为 pkill 的第一个选项时才有效。

操作数

支持下列操作数:

pattern

指定扩展常规表达 (Extended Regular Expression, ERE) 模式,以匹配可执行文件名或完整进程参数字符串。有关 ERE 语法的完整说明,请参见regex(5)

示例

示例 1 获取进程 ID

获取 sendmail 的进程 ID:

example% pgrep -x -u root sendmail
283
示例 2 终止进程

终止最新创建的 xterm

example% pkill -n xterm

退出状态

将返回以下退出值:

0

一个或多个进程匹配。

1

无进程匹配。

2

指定的命令行选项无效。

3

发生了致命错误。

文件

/proc/nnnnn/psinfo

进程信息文件

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os

另请参见

kill(1)proc(1)ps(1)truss(1)kill(2)signal.h(3HEAD)proc(4)attributes(5)privileges(5)regex(5)zones(5)

附注

这两个实用程序将 ERE pattern 参数与 /proc/nnnnn/psinfo 文件的 pr_fnamepr_psargs 字段进行匹配。这些字符串的长度根据 <sys/procfs.h> 中的定义进行限制。如果模式可匹配比当前限制长的字符串,则可能无法匹配指定的进程集。

如果 pattern 参数包含 ERE 元字符(同时也是 shell 元字符),可能需要使用适当的 shell 引号将此模式括起来。

从不使用 pgreppkill 匹配死进程。

当前 pgreppkill 进程绝不会将自身视为可能匹配。