根据名称和其他属性查找进程或向进程发出信号
命令语法格式
pgrep [options] pattern
pkill [options] pattern
命令描述
命令pgrep查看当前正在运行的进程,并将与选择条件匹配的进程ID列出到标准输出。 所有条件都必须匹配。 例如,
将仅列出root所拥有,且名为sshd的进程。 另一方面,
将列出root或者daemon拥有的进程。
命令pkill会将指定的信号(默认为SIGTERM)发送到每个进程,而不是将它们列在标准输出上。
pattern
该操作数指定扩展正则表达式(ERE),用于匹配进程名称或命令行。
命令支持的选项及含义
控制匹配行为
-signal, –signal signal
定义要发送到每个匹配进程的信号。 可以使用数字或符号信号名称。(仅限pkill)
-f, –full
该模式通常仅与进程名称匹配。 设置-f时,使用完整的命令行。
-x, –exact
仅匹配名称与模式pattern完全匹配的进程。(或指定了-f的命令行)
-i, –ignore-case
匹配进程时忽略大小写。
-g, –pgroup pgrp,…
仅匹配在列出的进程组ID中的进程。进程组为”0“表示pgrep或pkill自己的进程组。
-G, –group gid,…
仅匹配列出实际组ID的进程。 可以使用数字或符号值。
-n, –newest
仅选择最新(最近启动)的匹配进程。
-o, –oldest
仅选择最早(最近最少启动)的匹配进程。
-P, –parent ppid,…
仅匹配列出其父进程ID的进程。
-s, –session sid,…
仅匹配在进程会话ID中列出的进程。 会话ID为0被解释成pgrep或pkill自己的会话ID。
-t, –terminal term,…
仅匹配在控制终端中列出的进程。应指定终端名称,不带“/dev/”前缀。
-u, –euid euid,…
仅匹配在有效用户ID中列出的进程。 可以使用数字或符号值。
-U, –uid uid,…
仅匹配在真实用户ID中列出的进程。 可以使用数字或符号值。
-v, –inverse
否定匹配。 此选项通常用于pgrep的上下文中。 在pkill的上下文中,禁用短选项以避免意外使用该选项。
-w, –lightweight
在pgrep的上下文中显示所有线程ID,而不是pids。 在pkill的上下文中,此选项被禁用。
-F, –pidfile file
从文件中读取PID。 这个选项对于pkill而言比pgrep更有用。
-L, –logpidfile
如果pidfile(请参阅-F)未锁定,则失败。
–ns pid
匹配属于相同名称空间的进程。 需要以root身份运行以匹配来自其他用户的进程。 有关如何限制要匹配的命名空间,请参阅–nslist。
–nslist name,…
仅匹配提供的命名空间。 可用的命名空间:ipc,mnt,net,pid,user,uts。
控制输出内容和输出形式
-d, –delimiter delimiter
设置在输出中分隔每个进程ID的字符串(默认为换行符)。(仅限pgrep)
-l, –list-name
列出进程名称以及进程ID。 (仅限pgrep)
-a, –list-full
列出完整的命令行以及进程ID。 (仅限pgrep)
-c, –count
抑制正常输出;而是打印匹配进程的计数。 当计数与任何事物都不匹配时,例如返回零,该命令将返回非零值。
其他选项
-V, –version
显示版本信息并退出。
-h, –help
显示帮助信息并退出。
注意事项
用于匹配的进程名称限制为/proc/pid/stat输出中存在的15个字符。 使用-f选项匹配完整的命令行/ proc / pid / cmdline。
正在运行的pgrep或pkill进程永远不会将自己报告为匹配项。
选项-n和-o和-v不能组合使用。 如果您需要这样做,请告诉作者。
报告了停止活动的进程。
退出状态
0 一个或多个进程符合条件。 对于pkill,该过程也必须已成功发出信号。
1 没有匹配的进程,或者没有任何进程可以接收信号。
2 命令行中的语法错误。
3 致命错误:内存不足等
使用示例
示例1:查找named守护程序的进程ID:
示例2:使syslog重新读取其配置文件:
示例3:提供有关所有xterm进程的详细信息:
示例4:使所有chrome进程运行得更好,提高优先级:
如上示例。
相关手册
ps(1), regex(7), signal(7), killall(1), skill(1), kill(1), kill(2)
参考文献
- man 1 pgrep, Version pgrep from procps-ng 3.3.15
更新日志
- 07/30/2018 创建文章