17)-性能测试必备linux命令(8)-“pstree”

性能测试必备的 Linux 命令系列,可以看下面链接的文章哦

https://www.cnblogs.com/poloyy/category/1819490.html

 

介绍

显示进程树

 

语法格式

pstree [-a, --arguments] [-c, --compact] [-h, --highlight-all, -Hpid, --high‐
       light-pid pid] [-g] --show-pgids] [-l, --long] [-n, --numeric-sort] [-N, --ns-sortns
       [-p, --show-pids] [-s, --show-parents] [-S, --ns-changes] [-t, --thread-names]
       [-T, --hide-threads] [-u, --uid-changes] [-Z, --security-context]
       [-A, --ascii, -G, --vt100, -U, --unicode] [pid, user]
pstree -V, --version

 

命令行参数

 

栗子

pstree -acpgts

演变的过程

 

转载:https://www.cnblogs.com/poloyy/p/13523978.html

<think>我们被要求详细解释Linux系统中`pstree -p`命令的作用和使用方法。根据引用[2]和引用[4]的内容,我们可以得到以下信息: 1. **命令作用**:`pstree -p`命令用于以树状结构显示进程及其父子关系,并在每个进程名称旁边显示其进程ID(PID)。这样用户可以直观地看到进程的层级关系以及每个进程的具体PID。 2. **功能说明**: - 显示进程树:以树状结构展示系统中正在运行的进程,展示进程之间的父子关系(即哪些进程是由其他进程派生出来的)。 - 显示进程ID:使用`-p`选项后,会在每个进程名称后面用括号显示该进程的PID,例如:`sshd(1234)─┬─sshd(5678)───bash(9012)`。 3. **使用场景**: - 当需要查看某个进程及其子进程的PID时(如引用[4]中提到的排查线程资源耗尽问题)。 - 分析进程间的关系,例如查找某个服务的所有相关进程。 - 结合其他命令(如`grep`)进行更复杂的进程分析。 4. **常用参数**(结合引用[2]): - `-p`:显示进程的PID。 - 其他常用选项(虽然不是`-p`直接相关的,但可以配合使用): - `-a`:显示命令行参数。 - `-n`:按PID排序而不是按进程名(默认按进程名排序)。 - `-l`:避免截断长行(显示完整命令行)。 - `-c`:不压缩相同的子树(默认会压缩相同的进程分支)。 5. **使用示例**(根据引用[2]和引用[4]): - 显示所有进程的树状结构并包含PID:`pstree -p` - 显示特定进程ID的进程树:`pstree -p 1234`(其中1234是目标进程的PID) - 显示特定用户的进程树:`pstree -p username` - 统计系统中进程和线程的总数(通过组合命令):`pstree -p | wc -l`(注意:这统计的是行数,因为每个进程或线程在树中占一行,但要注意树状结构中的缩进符号也会被计入行数,所以这个数字并不是精确的进程数,但可以作为一个参考) 6. **注意事项**: - 如果进程树很长,可以使用`less`等分页工具:`pstree -p | less` - 在排查资源耗尽问题时(如引用[4]中提到的线程数用完),可以通过`pstree -p`查看进程树,结合进程ID进一步分析(如使用`ps`查看线程数)。 7. **安装说明**: - 如果系统没有安装pstree,需要安装`psmisc`包(引用[2]提供了安装方法): - Debian/Ubuntu: `sudo apt install psmisc` - CentOS/RHEL: `sudo yum install psmisc` - Fedora: `sudo dnf install psmisc` 8. **输出解读**: - 树状结构:通过缩进和符号(如`├─`、`└─`)表示层级关系。 - 进程名称和PID:例如`sshd(1234)`,其中`sshd`是进程名,`1234`是PID。 9. **与其他命令结合**: - 结合`grep`查找特定进程:`pstree -p | grep sshd` - 结合`pgrep`获取进程ID后再用pstree显示:`pstree -p $(pgrep sshd)` 根据以上信息,我们可以组织回答。</think>### Linux系统中 `pstree -p` 命令详解 `pstree -p` 是 Linux 系统中用于**可视化进程树结构并显示进程 ID(PID)** 的关键命令。它基于 `pstree` 工具(属于 `psmisc` 软件包),通过树状图直观展示进程间的父子关系,并明确标注每个进程的 PID[^2][^3]。以下是详细解释: --- #### **一、核心功能** 1. **树状结构展示** - 以缩进和分支形式显示进程层级关系,例如: ```bash systemd(1)─┬─sshd(1234)───sshd(5678)───bash(9012) ├─nginx(2345)─┬─nginx(3456) │ └─nginx(4567) └─dockerd(6789)───containerd(7890) ``` - 根进程通常是 `systemd(1)` 或 `init(1)`,其他进程是其子进程或后代[^1][^2]。 2. **显示进程 ID(PID)** - `-p` 参数在每个进程名后附加括号标注 PID,例如 `nginx(2345)`[^2][^3]。 3. **父子关系可视化** - 通过符号(`├─`, `└─`, `───`)表示进程间的派生关系,清晰展示: - 哪些进程由同一父进程创建 - 进程的嵌套层级深度 --- #### **二、使用场景与示例** | **场景** | **命令示例** | **作用** | |-----------------------------|----------------------------------|-------------------------------------------| | 查看系统所有进程树 | `pstree -p` | 显示完整进程树及所有 PID[^2] | | 查看特定进程的子进程 | `pstree -p 2345` | 显示 PID=2345 的进程及其后代 | | 查看用户的进程树 | `pstree -p username` | 仅显示指定用户拥有的进程[^2] | | 排查资源耗尽问题 | `pstree -p \| wc -l` | 统计进程/线程总数(如线程数超限问题)[^4] | | 结合其他命令分析 | `ps aux \| grep nginx && pstree -p $(pgrep nginx)` | 定位进程并查看其树状结构[^3] | --- #### **三、关键参数解析** | **参数** | **作用** | |----------|--------------------------------------------------------------------------| | `-p` | 显示所有进程的 PID(核心功能) | | `-n` | 按 PID 数值排序(默认按进程名排序)[^3] | | `-c` | 禁用相同子树的压缩(默认会折叠重复进程) | | `-l` | 禁止截断长命令行(完整显示参数)[^2] | | `-h` | 高亮显示指定进程及其后代(如 `pstree -h 2345`) | --- #### **四、工作原理** 1. **数据来源** - 读取 `/proc` 文件系统中的进程信息,包括: - `/proc/[pid]/status`:进程状态和 PPID(父进程 ID) - `/proc/[pid]/task/`:线程信息(线程视为轻量级进程) 2. **树构建逻辑** - 从 PID=1 的根进程开始递归遍历 - 通过 PPID 字段建立父子关系链 - 使用 ASCII 字符绘制树状分支结构 --- #### **五、典型应用案例** **问题诊断**:服务器报错 `-bash: fork: retry: 没有子进程` **解决步骤**: 1. 执行 `pstree -p \| wc -l` 统计进程总数 2. 若接近系统线程限制(`ulimit -u`),使用 `pstree -p` 定位线程密集型进程[^4] 3. 发现异常进程(如泄露线程的 Java 服务): ```bash java(12345)─┬─{java}(12346) ├─{java}(12347) └─...(共 500+ 线程) ``` 4. 重启问题进程或调整 `/etc/security/limits.d/20-nproc.conf`[^4] --- #### **六、安装说明** 若系统未预装,需安装 `psmisc` 包: ```bash # Debian/Ubuntu sudo apt install psmisc # CentOS/RHEL sudo yum install psmisc # Fedora sudo dnf install psmisc ``` --- > **注意**:`pstree -p` **不显示线程名**(仅显示 PID)。若需查看线程详情,可结合 `ps -T -p <PID>` 命令[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值