Linux命令如何查询进程组ID
- Linux
- 2025-06-26
- 6
在Linux系统中,进程组(Process Group)是一组相关联进程的集合,通常由同一个父进程创建,用于实现作业控制(如终端信号的分发),查看进程组有助于分析进程间的协作关系、资源分配或排查问题,以下是几种专业且实用的查看方法:
使用 ps 命令
ps 是最常用的进程查看工具,通过添加特定参数可显示进程组信息。
命令示例:
ps -eo pid,pgid,ppid,comm,args --sort pgid
参数解析:
- -eo:自定义输出列(pid=进程ID, pgid=进程组ID, ppid=父进程ID, comm=命令名, args=完整命令)。
- --sort pgid:按进程组ID排序。
输出示例:
PID PGID PPID COMMAND ARGS 1234 1234 5678 bash /bin/bash 5678 1234 9012 node /usr/bin/node app.js
说明:
- 同一进程组(PGID相同)的进程属于同一组。
- 进程组ID通常等于组内第一个进程(组长进程)的PID。
结合 pstree 查看层级关系
pstree 以树形结构展示进程关系,直观体现进程组嵌套。
命令示例:
参数解析:
- -g:显示进程组ID(PGID)。
- -p:显示进程PID。
输出示例:
systemd(1)─┬─sshd(1234,1234)───bash(5678,1234)───node(9012,1234) └─crond(4321,4321)
说明:
- 括号内格式为 (PID, PGID)。
- 此例中 sshd、bash、node 同属PGID 1234,crond 独立成组(PGID=4321)。
查看 /proc 文件系统
Linux的 /proc 目录存储实时进程信息,直接读取文件获取原始数据。
操作步骤:
cat /proc/<PID>/status | grep -i pgid
示例(查看PID为5678的进程组ID):

输出:
NSpgid: 1234 # 进程组ID
说明:
- 需替换 <PID> 为目标进程的实际ID。
- 适合脚本自动化处理,但需手动定位进程。
使用 pgrep 检索特定进程组
通过进程名反向查找组内所有成员。
命令示例:
pgrep -g <PGID> -l
示例(查找PGID=1234的所有进程):
pgrep -g 1234 -l
输出:

5678 bash 9012 node
说明:
- -l 显示进程名,省略则仅输出PID。
- 需提前知道目标PGID(可通过 ps 获取)。
终端会话组:ps 结合 tty
针对终端关联的进程组(如SSH会话),筛选特定终端:
ps -t tty1 -o pid,pgid,comm
输出:
PID PGID COMMAND 5678 1234 bash 9012 1234 node
说明:
- -t tty1 指定终端设备(通过 who 或 tty 命令查看当前终端)。
应用场景与建议
- 快速概览:优先使用 ps --sort pgid 或 pstree -g。
- 精准检索:已知PGID时用 pgrep -g。
- 脚本处理:读取 /proc/<PID>/status。
- 权限要求:普通用户可查看自身进程,root 可查看系统所有进程组。
安全提示:
- 操作生产环境前,建议在测试环境验证命令。
- 避免随意终止进程组(如 kill -9 -<PGID>),可能导致服务异常。
引用说明:
- Linux man 手册(命令原生文档):man ps, man pstree, man proc。
- 符合POSIX标准进程管理规范(IEEE Std 1003.1)。
- 基于Linux内核5.0+版本验证(/proc文件系统结构)。
