Linux pgrep 命令详解
简介
Linux 中的 pgrep 命令是一个功能强大的实用程序,用于根据名称、用户、组和其他标准搜索进程。它允许轻松地找到匹配给定模式的运行进程的进程id (pid)。该命令对于脚本或需要查找特定进程而不需要使用 ps 手动查找的管理员特别有用。
常用选项
-
-u <user>:查找特定用户拥有的进程 -
-g <group>:查找特定组中的进程 -
-P <pid>:查找给定父PID的子进程 -
-f <pattern>:与完整命令行进行匹配(不仅仅是进程名称) -
-l:显示进程名称及其PID -
-o:仅返回第一个匹配的进程 -
-v:反向搜索(返回与模式不匹配的进程) -
-c <name>:通过可执行命令(而不是名称)查找进程 -
-x:完全匹配(即匹配命令的全名) -
-d <delimiter>:指定PID的分隔符,默认是换行符 -
-c:打印出匹配的数量 -
-i:匹配时不区分大小写 -
-n:仅选择最新的(最近启动的)匹配进程
示例用法
通过名称查找进程
要查找特定进程 (例如
bash) 的进程ID
pgrep bash
示例输出
1234
5678
查找特定用户的进程
要查找以特定用户(例如
root)运行的进程
pgrep -u root
按名称和用户查找进程
可以组合条件。例如,要查找用户
john拥有的bash进程
pgrep -u john bash
显示进程名称和 PID
默认情况下,
pgrep仅显示PID。也可以使用-l选项列出进程名称
pgrep -l bash
示例输出
1234 bash
5678 bash
匹配部分名称(使用正则表达式)
此命令匹配命令行中包含字符串
apache的进程,而不仅仅是名称中包含该字符串的进程
pgrep -f apache
通过命令行参数搜索进程
使用特定参数搜索进程(例如,使用
URL搜索curl进程)
pgrep -f "curl http://example.com"
排除进程
列出除与
bash匹配的所有进程
pgrep -v -f "bash"
按父进程 ID (PPID) 搜索
查找特定父进程的所有子进程
pgrep -P 1234
查找当前 shell 的 PID
pgrep -P $$
仅返回 bash 进程的第一个匹配项
pgrep -o bash
获取特定用户组的所有进程
pgrep -g <group_name>
pgrep -g staff
搜索使用特定端口的进程
ss -ltnp | grep ':8080' | pgrep -f
要搜索使用端口 8080 的进程(通过 netstat 或 ss),再通过管道传给 pgrep
指定输出的 PID 分隔符
pgrep ssh -d' '
示例输出
1039 2257 6850 31279
正则精准匹配
pgrep '^ssh$' -l
^表示以某字符串开头,$表示以某字符串结尾
浙公网安备 33010602011771号