学一个Linux命令-pstree

简介: 学一个Linux命令-pstree

pstree是一个Linux下的命令,通过它可以列出当前的进程,以及它他们的树状结构。通过pstree可用于分析进程的状态、间关系已经在特定的场合,比病毒排查中有重要的作用。

说直白一点,即ps+tree,ps命令可以显示当前正在运行的那些进程的信息,tree主要功能是创建文件列表,将所有文件以树的形式列出来。pstree命令是用于查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,以树状展示,可以清楚的看出来是谁创建了谁。


安装


默认系统中是没有安装pstree命令的,使用pstree需要安装psmisc软件包。

#不同的操作系统使用以下命令来安装
#在 Mac OS上
brew install pstree
#在 Fedora/Red Hat/CentOS
yum -y install psmisc
#在 Ubuntu/Debian
apt-get install psmisc


语法


pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
#或使用man函数查找使用方法
man pstree

-a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号

-c 如果有重覆的行程名, 则分开列出(预设值是会在前面加上 *) -A: 各进程树之间的连接以ASCII码字符来连接 -U:各进程树之间的连接以utf8字符来连接,某些终端可能会有错误 -p:同时列出每个进程的PID -u: 同时列出每个进程的所属账号名称:


例子


#1.以树状图只显示进程的名字,且相同进程合并显示:
[root@blog ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─YDLive───6*[{YDLive}]
        ├─YDService─┬─YDEdr───11*[{YDEdr}]
        │           └─22*[{YDService}]
        ├─acpid
        ├─2*[agetty]
        ├─atd
        ├─auditd───{auditd}
        ├─barad_agent─┬─barad_agent
        │             └─barad_agent───4*[{barad_agent}]
        ├─crond
        ├─dbus-daemon
……
#2.显示进程并显示pid,每个进程括号里的则是pid号
[root@blog ~]# pstree -p
systemd(1)─┬─NetworkManager(32014)─┬─{NetworkManager}(32020)
           │                       └─{NetworkManager}(32022)
           ├─YDLive(1804)─┬─{YDLive}(1805)
           │              ├─{YDLive}(1806)
           │              ├─{YDLive}(1807)
           │              ├─{YDLive}(1810)
           │              ├─{YDLive}(1813)
           │              └─{YDLive}(21032)
           ├─YDService(1812)─┬─YDEdr(1828)─┬─{YDEdr}(1832)
           │                 │             ├─{YDEdr}(1833)
           │                 │             ├─{YDEdr}(1834)
           │                 │             ├─{YDEdr}(1835)
           │                 │             ├─{YDEdr}(1836)
           │                 │             ├─{YDEdr}(1837)
           │                 │             ├─{YDEdr}(1838)
           │                 │             ├─{YDEdr}(1839)
           │                 │             ├─{YDEdr}(1840)
           │                 │             ├─{YDEdr}(1841)
           │                 │             └─{YDEdr}(1855)
           │                 ├─{YDService}(1814)
……
#3.查看pid的进程与子进程:pstree -p [pid]
[root@blog ~]# pstree -p 1408
sshd(1408)───sshd(24182)─┬─bash(19110)───sleep(19120)
                         ├─bash(24184)───pstree(19135)
                         ├─bash(24231)───top(24325)
                         └─sftp-server(24223)
#4.以树状图显示进程,相同名称的进程不合并显示,并且会显示命令行参数。
[root@blog ~]# pstree -a
systemd --switched-root --system --deserialize 22
  ├─NetworkManager --no-daemon
  │   └─2*[{NetworkManager}]
  ├─YDLive
  │   └─6*[{YDLive}]
  ├─YDService
  │   ├─YDEdr
  │   │   └─11*[{YDEdr}]
  │   └─22*[{YDService}]
  ├─acpid
  ├─agetty --noclear tty1 linux
  ├─agetty --keep-baud 115200,38400,9600 ttyS0 vt220
  ├─atd -f
  ├─auditd
  │   └─{auditd}
  ├─barad_agent
  │   ├─barad_agent
  │   └─barad_agent
  │       ├─sh -c ntpdate -b -d ntpupdate.tencentyun.com 2>&1 | grep 'step time server' | sed -r 's/.*offset(.*)sec.*/\\1/'
  │       │   ├─grep step time server
……

以上为常用的参数搭配,可实践敲一下,感受下Linux系统设计与pstree命令巧妙之处。

相关文章
|
4天前
|
安全 算法 Linux
探索Linux命令gpgv2:安全通信与数据验证的利器
`gpgv2`是GPG的签名验证工具,用于确保文件完整性和来源真实性。基于公钥密码学,支持多种加密算法和OpenPGP标准。通过`--verify`等参数验证签名,例如`gpgv2 --verify signature_file file`。重要注意事项包括保护私钥、定期更新密钥、验证签名来源及使用强密码。在数据安全场景中,`gpgv2`是保障信息安全的利器。
|
4天前
|
安全 Linux 数据处理
深入探索Linux中的gpgsplit命令
`gpgsplit`是GPG套件的一部分,用于分割大型加密文件或合并加密的OpenPGP消息。它支持ASCII armored和二进制格式,提供按字节数、行数或消息数分割的灵活性,并可合并消息。在处理大型加密文件、安全管理及数据传输中发挥作用。使用时注意保护私钥、备份数据、正确指定格式,并遵循安全实践。示例:使用`--split 10M`将大文件按10MB分割,`cat`多个消息文件并用`gpgsplit --output`合并。
|
4天前
|
Linux 开发者
Linux基础:常用命令及其用途
这些命令只是Linux命令行的冰山一角,但它们构成了日常工作的基础。通过掌握这些基本命令,你可以更有效地利用Linux系统的强大功能。随着你对这些基础命令的熟练应用,你会发现自己能够更快地完成任务并解决问题。
12 2
|
21小时前
|
算法 网络协议 Linux
探索Linux命令idn:处理国际化域名
`idn`命令在Linux中用于处理国际化域名,转换成ASCII兼容的ACE格式或反之。它支持Punycode算法,提供命令行接口及多种参数,如`-a`转ASCII,`-d`转回国际化域名。示例包括将`xn--zhonggu-wu9d.com`转换。使用时注意有效输入,考虑版本兼容性,并可与其他工具结合使用。
|
21小时前
|
Linux 数据处理 数据库
深入解析Linux命令id:理解用户身份与权限
`id`命令在Linux中用于显示用户身份(UID, GID和附加组)。它查看系统用户数据库获取信息。参数如`-u`显示UID,`-g`显示GID,`-G`显示附加组,结合`-n`显示名称而非ID。用于确认命令执行者身份,确保权限正确。在脚本中使用时注意权限管理,遵循最小权限原则。
|
21小时前
|
Linux 数据处理
Linux命令iconv:字符编码转换的利器
`iconv`是Linux下的字符编码转换工具,支持多种编码如UTF-8、ISO-8859-1等。它允许用户指定源(-f)和目标(-t)编码,转换文件或输出到指定文件(-o)。使用`-l`可列出所有支持的编码。示例:将UTF-8文件转为ISO-8859-1编码:`iconv -f UTF-8 -t ISO-8859-1 input.txt -o output.txt`。在转换前确认源编码,测试小样本,备份数据,并注意特殊字符处理。
|
22小时前
|
网络协议 Linux 网络安全
Linux命令hostnamectl:掌握系统主机信息的利器
`hostnamectl`是Linux系统管理的关键工具,用于查看和设置主机名、内核信息等。它集成在`systemd`中,通过修改配置文件交互。命令特点包括综合显示多种信息、简单语法和设置功能。例如,`hostnamectl status`显示系统详情,`sudo hostnamectl set-hostname NEWHOSTNAME`用于更改主机名。使用时注意权限、备份配置、更新网络和重启相关服务,避免频繁更改。
|
22小时前
|
存储 Ubuntu 网络协议
Linux命令hostname:探索你的主机名
`hostname`命令在Linux中用于显示或设置主机名,它是系统管理和网络配置的关键工具。简单易用,可查看(`hostname`)或通过参数如`-s`设置短主机名,`-F`指定主机名文件。示例:查看主机名、使用`hostnamectl`或直接`hostname`命令设置新主机名,以及将新名写入`/etc/hostname`。注意,更改可能需管理员权限,并影响网络配置。
|
22小时前
|
安全 Linux 数据处理
Linux hostid命令:主机标识符的奥秘
Linux hostid命令:主机标识符的奥秘
|
1天前
|
Linux Unix Windows
【Linux终端探险】:从入门到熟练,玩转基础命令的秘密(二)
【Linux终端探险】:从入门到熟练,玩转基础命令的秘密(二)