Linux 命令(176)—— pstree 命令

Posted 爱码大鲤鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 命令(176)—— pstree 命令相关的知识,希望对你有一定的参考价值。

文章目录

1.命令简介

pstree(process tree)显示进程树。

pstree 将所有行程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init 这个基本进程为根 (root)。如果有指定使用者 id,则树状图只会显示该使用者所拥有的进程。

使用 ps 命令得到的数据精确,但数据庞大,这一点对掌握系统整体概况来说是不容易的。pstree 命令正好可以弥补这个缺憾。它能将当前的执行程序以树状结构显示。pstree命令支持指定特定程序(PID)或使用者(USER)作为显示的起始。

2.命令格式

pstree [<options>] [<pid> | <user>]
pstree -V | --version

3.选项说明

-a, --arguments
	显示每个程序的完整指令,包含路径、参数或是常驻服务的标示。
-c, --compact-not
	不使用精简标示法。
-G
	使用 VT100 终端机的线条绘制字符。
-h, --highlight-all
	列出树状图时,特别标明执行的程序。
-H, --highlight-pid <pid>
	此参数的效果和指定"-h"参数类似,但特别标明指定的程序。
-l, --long
	采用长列格式显示树状图。
-n, --numeric-sort
	用程序识别码排序。预设是以程序名称来排序。
-p, --show-pids
	显示进程 ID。PID 在每个进程名称后面的括号中显示为十进制数字。-p 将隐式禁用压缩。
-u, --uid-changes
	显示 uid 转换。每当进程的 uid 与其父进程的 uid 不同时,新 uid 就会显示在进程名称后面的圆括号中。
-U, --unicode
	使用 UTF-8 线条绘制字符。
-V, --version
	显示版本信息。

4.常用示例

(1)以树状图显示进程。

pstree
systemd─┬─BT-Panel───BT-Panel
        ├─BT-Task─┬─python
        │         └─11*[BT-Task]
        ├─YDLive─┬─YDService─┬─sh───8*[sh]
        │        │           └─22*[YDService]
        │        └─9*[YDLive]
        ├─abrt-dbus───3*[abrt-dbus]
        ├─acpid
        ├─2*[agetty]
        ├─atd
        ├─auditd───auditd
        ├─barad_agent─┬─barad_agent
        │             └─barad_agent───2*[barad_agent]
        ├─crond
        ├─dbus-daemon
        ├─dhclient
        ├─iscsid
        ├─lsmd
        ├─lvmetad
        ├─ntpd
        ├─polkitd───6*[polkitd]
        ├─rsyslogd───2*[rsyslogd]
        ├─sgagent───sgagent
        ├─ss-server
        ├─sshd─┬─4*[sshd───sshd]
        │      └─sshd─┬─bash───pstree
        │             └─bash───man───less
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tat_agent───7*[tat_agent]
        └─tuned───4*[tuned]

(2)显示所有进程的所有详细信息。

pstree -a
systemd --switched-root --system --deserialize 22
  ├─BT-Panel /www/server/panel/BT-Panel
  │   └─BT-Panel
  ├─BT-Task /www/server/panel/BT-Task
  │   ├─(python)
  │   └─11*[BT-Task]
  ├─YDLive
  │   ├─YDService
  │   │   ├─sh -c sleep 100
  │   │   │   └─8*[sh]
  │   │   └─22*[YDService]
  │   └─9*[YDLive]
  ├─acpid
  ├─agetty --noclear tty1 linux
  ├─agetty --keep-baud 115200,38400,9600 ttyS0 vt220
  ├─atd -f
  ├─auditd
  │   └─auditd
  ├─barad_agent
  │   ├─barad_agent
  │   └─barad_agent
  │       └─2*[barad_agent]
  ├─crond -n
  ├─dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
  ├─dhclient -q -lf /var/lib/dhclient/dhclient--eth0.lease -pf /var/run/dhclient-eth0.pid -H VM-0-3-centos eth0
  ├─iscsid -f
  ├─lsmd -d
  ├─lvmetad -f
  ├─ntpd -u ntp:ntp -g
  ├─polkitd --no-debug
  │   └─6*[polkitd]
  ├─rsyslogd -n
  │   └─2*[rsyslogd]
  ├─sgagent -d
  │   └─sgagent
  ├─ss-server -c /etc/shadowsocks-libev/config.json -u
  ├─sshd -D
  │   ├─sshd
  │   │   └─sshd
  │   ├─sshd
  │   │   └─sshd
  │   └─sshd
  │       ├─bash
  │       │   └─pstree -a
  │       └─bash
  │           └─man pstree
  │               └─less -s
  ├─systemd-journal
  ├─systemd-logind
  ├─systemd-udevd
  ├─tat_agent
  │   └─7*[tat_agent]
  └─tuned -Es /usr/sbin/tuned -l -P
      └─4*[tuned]

(3) 显示当前所有进程的进程 ID。

pstree -p
systemd(1)─┬─ModemManager(676)─┬─ModemManager(716)
           │                   └─ModemManager(719)
           ├─NetworkManager(680)─┬─dhclient(9982)
           │                     ├─NetworkManager(745)
           │                     └─NetworkManager(749)
           ├─VGAuthService(681)
           ├─abrt-watch-log(671)
           ├─abrt-watch-log(672)
           ├─abrtd(632)

(4)显示指定进程号树状信息。

pstree 1451
sshd───sshd─┬─bash───pstree
            └─bash───man───less

(5)显示进程树信息,结合管道。

pstree | less

参考文献

pstree(1) - Linux manual page - man7.org

以上是关于Linux 命令(176)—— pstree 命令的主要内容,如果未能解决你的问题,请参考以下文章

每天学一个 Linux 命令(101):pstree

linux每日命令(34):ps命令和pstree命令

Linux基础命令---显示树形进程pstree

Linux命令之树状图显示所有进程pstree

Linux进程查看命令之pstree

Linux ps和pstree命令