1. pstree
命令
功能
以树状结构显示进程间的父子关系,直观展示进程的层次结构。
常用选项
选项 | 说明 |
---|
-p | 显示进程 PID |
-a | 显示完整命令行(包括参数) |
-u | 显示进程所属用户 |
-n | 按 PID 排序(默认按进程名) |
-h | 高亮当前进程及其祖先 |
-G | 使用 VT100 终端字符绘制树状图 |
示例
pstree -pau
pstree -h
pstree -G
优点
- 直观性:树状结构清晰展示父子进程关系。
- 信息全面:可显示 PID、用户、命令行参数等。
- 跨用户/系统级:可查看所有用户的进程(需
sudo
)。
缺点
- 静态快照:无法实时刷新(需手动重复执行)。
- 依赖进程树:若进程频繁创建/销毁,树状结构可能混乱。
2. jobs
命令
功能
管理当前 Shell 会话中的后台任务(仅限当前终端)。
常用选项
选项 | 说明 |
---|
-l | 显示任务 PID |
-p | 仅显示任务 PID |
-r | 仅显示运行中的任务 |
-s | 仅显示暂停的任务 |
示例
sleep 60 &
jobs -l
fg %1
bg %2
优点
- 实时性:直接管理当前 Shell 的任务状态。
- 操作便捷:快速切换前后台任务(
fg
/bg
)。 - 无需权限:仅影响当前终端任务。
缺点
- 范围受限:仅显示当前 Shell 启动的任务。
- 信息简单:不显示进程树或跨会话任务。
3. pstree
vs jobs
对比
对比项 | pstree | jobs |
---|
作用范围 | 系统所有进程 | 当前 Shell 的后台任务 |
输出格式 | 树状结构(父子关系) | 列表(任务 ID 和状态) |
实时性 | 静态(需手动刷新) | 动态(实时反映任务状态) |
依赖权限 | 查看其他用户进程需 sudo | 仅需当前用户权限 |
常用场景 | 分析进程依赖、排查僵尸进程 | 管理后台任务(如长时间运行脚本) |
信息深度 | 显示 PID、用户、命令行等 | 仅显示任务 ID 和状态 |
4. 如何选择?
- 需要分析全局进程树 → 用
pstree
(如排查进程卡死)。 - 管理当前终端任务 → 用
jobs
(如暂停/恢复后台脚本)。 - 结合使用:
jobs -l
pstree -p <PID>
总结
pstree
是 系统级 进程分析工具,适合调试复杂进程关系。jobs
是 Shell 级 任务管理工具,适合控制后台任务。- 两者互补:
jobs
管理任务,pstree
分析其背后的进程结构。