Linux的pkill和pgrep命令详解
Linux的pkill和pgrep命令详解
名称
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或者是daemon的进程。如果多个条件被指派,这些匹配条件按逻辑与”AND”规则运算。例如,
pgrep -G other,daemon -U root,daemon
匹配进程它的属性是:
(真实的组ID是other或者是daemon) 与 (真实的⽤户ID是root或者是daemon)
pkill函数和pgrep相同,除了匹配的进程被信号通知就像⽤kill(1)替代了pgrep的进程ID的输出。⼀个信号名称或者数字可以作为pkill的第⼀个命令⾏选项。
选项
⽀持下⾯的选项:The following options are supported:
-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包括在列表中,这个被解释为pgrep或者pkill进程的组ID。
-G gidlist仅匹配真实组ID在给定列表中的进程。每⼀个组ID可以使⽤组名称或者数字的组ID指定。
-J projidlist匹配项⽬ID在给定列表中的进程。每⼀个项⽬ID可以使⽤项⽬的名称或者数字项⽬ID来指定。
-l长格式输出。输出每⼀个匹配进程的名称连同进程ID。进程名称从pr_psargs 或者 pr_fname字段获得,依赖于-f选项是否指定。-l选项仅在pgrep命令中有效。
-n匹配最新(最近⽣成的)符合所有其它匹配条件的进程。不能和-o选项⼀起使⽤。
-o匹配最旧(最早⽣成的)符合所有其它匹配条件的进程。不能和-n选项⼀起使⽤。
-P ppidlist 仅匹配给定列表中⽗进程ID的进程。
-s sidlist 仅匹配进程会话ID在给定列表中的进程。如果ID 0在列表中,这个解释为pgrep或者pikill进程的会话ID。
-t termlist 仅匹配与给定列表中终端关联的进程。每⼀个终端指定为在/dev中终端设备路径名称的后缀。例如term/a 或者 pts/0。
-T taskidlist 仅匹配在给定列表中任务ID的进程。如果ID 0包括在列表中,这个解释为pgrep或者pikill进程的会话ID。
-u euidlist 仅匹配有效⽤户ID在给定列表中的进程。每个⽤户ID可以通过⼀个登录名称或者数字的⽤户ID指定。
-U uidlist 仅匹配真实的⽤户ID在给定列表中的进程。每个⽤户ID可以通过⼀个登录名称或者数字的⽤户ID指定。
-v 反向匹配。匹配所有的进程除了符合匹配条件的。
-x 仅认为进程其参数字符串或者执⾏⽂件名称正确匹配规定模式是匹配的进程。模式被认为是准确的当所有在进程参数字符串或者可执⾏⽂
件名称的字符匹配模式。
-z zoneidlist 仅匹配区域ID在给定列表中的进程。每⼀个区域ID可以使⽤⼀个区域名称或者⼀个数字的区域ID指定。这个选项仅在全局区域中执⾏有效。如果pkill程序⽤来往其它区域的进程发信号,进城必须宣称{PRIV_PROC_ZONE}特权。
-signal 指定发往每⼀个匹配进程的信号。如果没有指定,SIGTERM 是默认的信号。-signal仅在pkill命令中作为第⼀个选项有效。信号可以是在signal.h中定义的没有SIG前缀的⼀个符号名字,也可是⼀个相应的信号数值。
操作
⽀持如下操作:
pattern
指定⼀个扩展正则表达式(Extended Regular Expression (ERE))模式来匹配可执⾏⽂件名称或者完整的进程参数字符串。ERE语法的完整描述参看regex(5)。
例⼦
例⼦1 获得⼀个进程ID
获得send的进程ID:
example% pgrep -x -u root sendmail
grep命令有什么用
283
例⼦2 终⽌⼀个进程
终⽌最近⽣成的xterm:
example% pkill -n xterm
Exit Status
如下退出值被返回:
0 ⼀个或者多个进程被匹配。
1 没有进程被匹配。
2 指定了⽆效的⾏参数。
3 出现⼀个致命的错误。
本⽂来⾃: