如何使用pstree命令来查看某个进程的详细信息?
美国、香港服务器
如何使用pstree命令来查看某个进程的详细信息?
01-13 来源:
✅ pstree 查看进程详细信息 完整教程(Ubuntu 24.04 实操版)
✅ 核心结论先明确
pstree 是 Linux 中专门查看进程树关系的核心命令,它的核心能力是:展示进程的「父子层级关系」+「线程组成」+「进程归属」,能看到一个进程由谁启动、它衍生了哪些子进程 / 子线程,是排查进程关联性、线程数、进程归属的绝佳工具;
补充:pstree 本身不显示 CPU / 内存使用率(这个功能之前已经明确过),但能查看进程的「结构类详细信息」,也是运维中「进程详细信息」的核心维度,文末会给你 「pstree + 查看 CPU / 内存」的完美组合命令,一次性查全进程所有详细信息!
✅ 一、pstree 基础说明(必看)
是否需要安装:Ubuntu 24.04 系统默认自带,无需手动安装,直接执行即可!
核心功能:以树形结构展示进程关系,Linux 中所有进程都是systemd(PID=1)的子进程,形成一棵完整的进程树,pstree就是可视化这棵树。
最核心特点:子进程缩进显示、同一父进程的子进程归类展示、线程用花括号 {} 标注,一目了然。
✅ 二、pstree 核心语法 + 参数(最全,按实用度排序,无冗余)
基础语法
bash
运行
pstree [可选参数] [进程PID/进程名]
必记核心参数(重中之重,99% 的场景只用这几个,优先级排序)
bash
运行
-p # 显示所有进程/线程的【PID进程号】,★★★★★ 必加!不加等于白看,查详细信息的核心
-a # 显示进程的【完整启动命令+参数】,比如redis启动时的配置文件、java启动的jar包路径
-u # 显示进程的【运行用户】,比如redis进程由redis用户运行、nginx由www-data运行
-h # 高亮显示当前进程的树形分支,查找目标进程时更醒目
-l # 不截断长命令,完整显示进程的启动参数(搭配-a使用,避免命令显示不全)
-T # 不显示线程(只看进程,不看线程,按需使用)
最优组合参数(推荐死记,查详细信息的黄金搭配)
bash
运行
pstree -apuh # 显示:树形结构+PID+完整命令+运行用户+高亮,信息最全最实用
✅ 三、查看「某个指定进程」详细信息的 3 种常用方法(按需求选择,全部高频)
✔️ 前提:先获取目标进程的【PID】或【进程名】(2 种方法,任选其一)
如果不知道进程 PID / 进程名,先执行以下命令获取,这是所有操作的基础:
bash
运行
# 方法1:按进程名查PID(精准,比如redis-server、nginx、python3)
pgrep redis-server
# 方法2:模糊搜索进程名+PID+运行用户+命令(最通用,推荐)
ps aux | grep redis | grep -v grep
✅ 方法 1:通过【进程 PID】查看详细信息(⭐⭐⭐⭐⭐ 推荐,最精准,无匹配误差)
适用于:知道进程 PID(比如查到 redis 的 PID 是1886),想查看这个进程的所有详细信息 + 子进程 + 线程,这是查单个进程的最优方式!
命令(按需求递进,从简到全)
bash
运行
# 基础版:看进程树形+PID+线程,最常用
pstree -p 1886
# 完整版:看【所有详细信息】(树形+PID+完整启动命令+运行用户+高亮),★★★ 首选
pstree -apuh 1886
输出示例(以 redis-server 为例)
plaintext
redis-server(1886,redis) - /usr/bin/redis-server 127.0.0.1:6379
├─{redis-server}(1887)
├─{redis-server}(1888)
└─{redis-server}(1889)
✅ 详细信息解读(逐字段解析,全部看懂 = 掌握核心)
redis-server:进程名称
(1886,redis):第一个值1886=进程 PID,第二个值redis=进程运行用户(-u 参数的效果)
/usr/bin/redis-server 127.0.0.1:6379:完整的进程启动命令 + 参数(-a 参数的效果),能看到 redis 的启动路径、绑定的 IP 和端口
{redis-server}(1887):花括号包裹的是该进程的子线程,1887是线程 ID,这是 redis 的工作线程(redis 是多线程程序)
树形缩进:表示这些线程都是1886这个主进程的子线程,从属关系清晰
✅ 方法 2:通过【进程名】查看详细信息(⭐⭐⭐⭐ 实用,不用记 PID)
适用于:只知道进程名(比如redis、nginx),不想查 PID,直接按名称筛选,快速查看该进程的所有实例 + 详细信息。
命令(2 种写法,都可用)
bash
运行
# 写法1:直接跟进程名,简洁
pstree -apuh redis-server
# 写法2:管道过滤(更通用,支持模糊匹配,比如输入redis就能匹配redis-server)
pstree -apuh | grep redis
输出示例
plaintext
redis-server(1886,redis) - /usr/bin/redis-server 127.0.0.1:6379
├─{redis-server}(1887)
└─{redis-server}(1888)
redis-server(2000,redis) - /usr/bin/redis-server 0.0.0.0:6380
└─{redis-server}(2001)
✔️ 优点:能一次性查到同名的所有进程实例(比如多端口的 redis),适合排查多实例进程。
✅ 方法 3:查看「进程的父子完整链路」(⭐⭐⭐⭐ 运维高频,排查进程归属)
适用于:想知道「这个进程是被哪个进程启动的」「它的父进程是谁、祖父进程是谁」,比如排查:crontab启动的脚本、nginx的子进程、supervisor托管的服务,这个用法能查到完整的进程调用链路,非常实用!
命令
bash
运行
# 格式:pstree -apuh | grep -B 3 -A 3 进程名/PID
# -B3:显示匹配结果的「前3行」父进程,-A3:显示匹配结果的「后3行」子进程/线程
pstree -apuh | grep -B 3 -A 3 redis-server
输出示例
plaintext
systemd(1,root) - /sbin/init splash
└─redis-server(1886,redis) - /usr/bin/redis-server 127.0.0.1:6379
├─{redis-server}(1887)
└─{redis-server}(1888)
✔️ 解读:能清晰看到 redis-server(1886) 是由系统根进程 systemd(1) 直接启动的,完整的父子链路一目了然。
✅ 四、pstree 输出的「核心标识解读」(必懂,看懂所有信息)
这是pstree的精髓,记住这几个标识,不管什么进程都能看懂它的详细信息:
进程名(PID):无花括号 → 这是独立进程,PID 是进程号
{进程名}(TID):有花括号 → 这是进程内的子线程,TID 是线程号,属于前面的主进程
进程名(PID,用户):逗号后是运行用户,由-u参数触发
进程名 启动命令:空格后是完整启动参数,由-a参数触发
树形缩进:层级越深,越靠后,缩进越多 → 表示从属关系(子进程 / 子线程)
✅ 五、高频实用场景案例(直接套用,解决 99% 的需求)
✔️ 场景 1:查看 Redis 的详细信息(线程数 + 启动命令 + 运行用户 + PID)
bash
运行
pstree -apuh redis-server
✔️ 场景 2:查看 Nginx 的主进程 + 工作进程 + 运行用户(nginx 是主从进程架构)
bash
运行
pstree -apuh nginx
✔️ 场景 3:查看 Python 脚本的进程 + 子线程 + 完整启动命令
bash
运行
pstree -apuh python3
✔️ 场景 4:只看进程,不看线程(过滤掉线程信息,简洁)
bash
运行
pstree -apuhT redis-server
✅ 六、✨ 终极需求解决:「用 pstree 查进程详细结构 + 查 CPU / 内存使用率」完美组合
✅ 你的真实需求:查看某个进程的「全部详细信息」= 进程结构 + 线程 + 启动命令 + 运行用户 + CPU 使用率 + 内存使用率
pstree负责查进程结构类信息,另外搭配 1 个命令就能查资源占用类信息,两个命令组合,就是「进程全量详细信息」的标准答案,也是运维的标准操作,必记!
✅ 组合方案(两步走,一次性查全,按 PID 操作最精准)
步骤 1:用 pstree 查【进程结构详细信息】(树形 + PID + 线程 + 命令 + 用户)
bash
运行
pstree -apuh 1886
步骤 2:任选其一,查【CPU / 内存使用率详细信息】(都是你之前学过的命令,无缝衔接)
bash
运行
# 方案A:用htop 可视化查看(推荐,最友好,实时刷新,能看到CPU%+MEM%)
htop -p 1886
# 方案B:用top 实时查看(系统自带,无需安装)
top -p 1886
# 方案C:用ps 一次性查看(简洁,无需交互,直接输出)
ps -p 1886 -o pid,ppid,pcpu,pmem,user,cmd
✅ 七、pstree 常见问题 & 避坑指南(运维必看,少走弯路)
❓ 问题 1:执行 pstree 后,进程名显示不全,命令被截断?
✅ 解决:加 -l 参数,完整显示长进程名和启动命令:pstree -apuhl 1886
❓ 问题 2:为什么有的进程下面有很多{进程名},有的没有?
✅ 原因:有花括号的是多线程进程(比如 Redis、Java、Nginx),没有的是单线程进程(比如简单的 shell 脚本、python 单线程程序),这是进程本身的特性决定的。
❓ 问题 3:pstree 显示的 PID 和 ps/top 显示的 PID 不一致?
✅ 不可能!所有 Linux 命令的 PID 都是内核统一分配的,绝对一致,大概率是你看错了「进程 PID」和「线程 TID」,线程的 TID 不是进程 PID,注意区分。
❓ 问题 4:想查看进程的父进程 PID(PPID)怎么办?
✅ 用 ps 命令搭配查看,这是最便捷的方式:ps -p 1886 -o pid,ppid,cmd (ppid 就是父进程 PID)
✨ 总结:pstree 核心命令速记(收藏备用,够用一辈子)
所有用法浓缩为极简清单,背下来,以后查进程详细信息直接上手:
✔️ 安装
无需安装,系统自带,直接执行。
✔️ 查单个进程详细信息(核心 3 条)
bash
运行
pstree -p 1886 # 最简:树形+PID+线程
pstree -apuh 1886 # 最全:树形+PID+完整命令+运行用户+高亮
pstree -apuh | grep redis # 按名称筛选:模糊匹配,不用记PID
✔️ 查进程全量信息(结构 + CPU + 内存)
bash
运行
pstree -apuh 1886 && htop -p 1886
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快