Linux命令——ps、pstree

时间:2023-03-09 19:44:59
Linux命令——ps、pstree

转载请注明出处:https://www.cnblogs.com/kelamoyujuzhen/p/9814883.html

ps

简介

ps(processes status)是Unix / Linux上的一个实用程序,用于查看系统上正在运行的进程的信息。ps命令默认安装,即使最小化安装也会有这个命令。ps命令从/proc文件系统中的虚拟文件中读取信息。 ps命令是系统管理的重要工具之一,专门用于进程监视,以帮助程序开发了解Linux系统上的最新情况。
请注意,ps生成带有标题行的输出,表示每列信息的含义。

用法演示

ps aux

a = show processes for all users 与terminal相关的进程
u = display the process's user/owner
x = also show you  (runner of the ps command, root in this case) all processes, not just ones attached to a terminal. This will include processes such as services like crond, upowerd, etc. 除了与终端相关的进程,还显示与terminal无关的进程

由于加上x后输出信息较多,示例没有加x

[root@localhost ~]# ps au
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 0.0 0.0 tty1 Ss+ : : /sbin/mingetty /dev/tty1
root 0.0 0.0 tty2 Ss+ : : /sbin/mingetty /dev/tty2
root 0.0 0.0 tty3 Ss+ : : /sbin/mingetty /dev/tty3
root 0.0 0.0 tty4 Ss+ : : /sbin/mingetty /dev/tty4
root 0.0 0.0 tty5 Ss+ : : /sbin/mingetty /dev/tty5
root 0.0 0.0 tty6 Ss+ : : /sbin/mingetty /dev/tty6
root 0.0 0.0 pts/ Ss : : -bash
root 0.0 0.0 pts/ R+ : : ps au
  • USER:该 process 属于哪个用户
  • PID :该 process 的PID
  • %CPU:该 process 使用掉的 CPU 资源百分比;
  • %MEM:该 process 所占用的实体内存百分比;
  • VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
  • RSS :该 process 占用的固定的内存量 (Kbytes)
  • TTY :该 process 是在那个终端机上面运行,若与终端机无关则显示 ?,另外, tty1-tty6 是本机上面的登陆者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
  • STAT:该程序目前的状态,状态显示与 ps -l 的 S 旗标相同 (R/S/T/Z)
  • START:该 process 被触发启动的时间;

R:running
S:interruptable sleeping 可中断睡眠
D: uninterruptable sleeping不可中断睡眠
T: stopped
Z: zombie僵尸进程。通常,造成僵尸程序的成因是因为该程序应该已经运行完毕,或者是因故应该要终止了, 但是该程序的父程序却无法完整的将该程序结束掉,而造成那个程序一直存在内存当中。 如果你发现在某个程序的 CMD 后面还接上 <defunct> 时,就代表该程序是僵尸程序啦,例如:

apache    0.0  0.9   ?   Z  :   : /usr/sbin/httpd <defunct>

通常僵尸进程交由init或者systemd进程处理,如果init或者systemd也干不死,那只能reboot了。

+: 前台进程
l: 多线程进程
N:低优先级进程
<:高优先级进程
s: session leader

  • TIME :该 process 实际使用 CPU 运行的时间。
  • COMMAND:该程序的实际命令为何?

ps -f 或者 -F可以多显示几列。其中-F显示的能更多些

[root@localhost ~]# ps -f
UID PID PPID C STIME TTY TIME CMD
root : pts/ :: -bash
root : pts/ :: ps -f
[root@localhost ~]# ps -F
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
root : pts/ :: -bash
root : pts/ :: ps -F

使用-L还可以显示NLWP (number of threads) 和 LWP (thread ID) 列

[root@localhost ~]# ps -L
PID LWP TTY TIME CMD
pts/ :: bash
pts/ :: ps
[root@localhost ~]# ps -Lf
UID PID PPID LWP C NLWP STIME TTY TIME CMD
root : pts/ :: -bash
root : pts/ :: ps -Lf
[root@localhost ~]# ps -LF
UID PID PPID LWP C NLWP SZ RSS PSR STIME TTY TIME CMD
root : pts/ :: -bash
root : pts/ :: ps -LF

显示Linux系统下所有活跃进程

ps -A 或 ps -e

[root@localhost proc]# ps -e
PID TTY TIME CMD
? :: systemd
? :: kthreadd
? :: ksoftirqd/
? :: kworker/:0H
? :: kworker/u256:
? :: migration/
? :: rcu_bh
? :: rcu_sched
? :: lru-add-drain
? :: watchdog/
? :: watchdog/
? :: migration/
? :: ksoftirqd/
? :: kworker/:0H
? :: watchdog/
? :: migration/
? :: ksoftirqd/
? :: kworker/:0H
? :: watchdog/
? :: migration/
? :: ksoftirqd/
? :: kworker/:0H
? :: kdevtmpfs
? :: netns
? :: khungtaskd
? :: writeback
? :: kintegrityd
? :: bioset
? :: kblockd
? :: md
? :: edac-poller
? :: kworker/:
? :: kswapd0
? :: ksmd
? :: khugepaged
? :: crypto
? :: kthrotld
? :: kmpath_rdacd
? :: kaluad
? :: kpsmoused
? :: kworker/:
? :: ipv6_addrconf
? :: deferwq
? :: kauditd
? :: mpt_poll_0
? :: ata_sff
? :: mpt/
? :: scsi_eh_0
? :: scsi_tmf_0
? :: kworker/u256:
? :: scsi_eh_1
? :: scsi_tmf_1
? :: scsi_eh_2
? :: scsi_tmf_2
? :: ttm_swap
? :: irq/-vmwgfx
? :: kworker/:
? :: kworker/:
? :: kdmflush
? :: bioset
? :: kdmflush
? :: bioset
? :: bioset
? :: xfsalloc
? :: xfs_mru_cache
? :: xfs-buf/dm-
? :: xfs-data/dm-
? :: xfs-conv/dm-
? :: xfs-cil/dm-
? :: xfs-reclaim/dm-
? :: xfs-log/dm-
? :: xfs-eofblocks/d
? :: xfsaild/dm-
? :: kworker/:1H
? :: systemd-journal
? :: lvmetad
? :: systemd-udevd
? :: nfit
? :: xfs-buf/sda1
? :: xfs-data/sda1
? :: xfs-conv/sda1
? :: xfs-cil/sda1
? :: xfs-reclaim/sda
? :: xfs-log/sda1
? :: xfs-eofblocks/s
? :: xfsaild/sda1
? :: kdmflush
? :: bioset
? :: xfs-buf/dm-
? :: xfs-data/dm-
? :: xfs-conv/dm-
? :: xfs-cil/dm-
? :: xfs-reclaim/dm-
? :: xfs-log/dm-
? :: xfs-eofblocks/d
? :: xfsaild/dm-
? :: auditd
? :: dbus-daemon
? :: polkitd
? :: irqbalance
? :: systemd-logind
? :: crond
? :: login
? :: firewalld
? :: NetworkManager
? :: kworker/:1H
? :: kworker/:1H
? :: dhclient
? :: tuned
? :: sshd
? :: rsyslogd
? :: master
? :: pickup
? :: qmgr
tty1 :: bash
? :: kworker/:1H
? :: sshd
pts/ :: bash
? :: kworker/:
? :: memcached
? :: kworker/:
? :: kworker/:
? :: kworker/:
? :: kworker/:
? :: kworker/:
pts/ :: ps
[root@localhost proc]# ps -A
PID TTY TIME CMD
? :: systemd
? :: kthreadd
? :: ksoftirqd/
? :: kworker/:0H
? :: kworker/u256:
? :: migration/
? :: rcu_bh
? :: rcu_sched
? :: lru-add-drain
? :: watchdog/
? :: watchdog/
? :: migration/
? :: ksoftirqd/
? :: kworker/:0H
? :: watchdog/
? :: migration/
? :: ksoftirqd/
? :: kworker/:0H
? :: watchdog/
? :: migration/
? :: ksoftirqd/
? :: kworker/:0H
? :: kdevtmpfs
? :: netns
? :: khungtaskd
? :: writeback
? :: kintegrityd
? :: bioset
? :: kblockd
? :: md
? :: edac-poller
? :: kworker/:
? :: kswapd0
? :: ksmd
? :: khugepaged
? :: crypto
? :: kthrotld
? :: kmpath_rdacd
? :: kaluad
? :: kpsmoused
? :: kworker/:
? :: ipv6_addrconf
? :: deferwq
? :: kauditd
? :: mpt_poll_0
? :: ata_sff
? :: mpt/
? :: scsi_eh_0
? :: scsi_tmf_0
? :: kworker/u256:
? :: scsi_eh_1
? :: scsi_tmf_1
? :: scsi_eh_2
? :: scsi_tmf_2
? :: ttm_swap
? :: irq/-vmwgfx
? :: kworker/:
? :: kworker/:
? :: kdmflush
? :: bioset
? :: kdmflush
? :: bioset
? :: bioset
? :: xfsalloc
? :: xfs_mru_cache
? :: xfs-buf/dm-
? :: xfs-data/dm-
? :: xfs-conv/dm-
? :: xfs-cil/dm-
? :: xfs-reclaim/dm-
? :: xfs-log/dm-
? :: xfs-eofblocks/d
? :: xfsaild/dm-
? :: kworker/:1H
? :: systemd-journal
? :: lvmetad
? :: systemd-udevd
? :: nfit
? :: xfs-buf/sda1
? :: xfs-data/sda1
? :: xfs-conv/sda1
? :: xfs-cil/sda1
? :: xfs-reclaim/sda
? :: xfs-log/sda1
? :: xfs-eofblocks/s
? :: xfsaild/sda1
? :: kdmflush
? :: bioset
? :: xfs-buf/dm-
? :: xfs-data/dm-
? :: xfs-conv/dm-
? :: xfs-cil/dm-
? :: xfs-reclaim/dm-
? :: xfs-log/dm-
? :: xfs-eofblocks/d
? :: xfsaild/dm-
? :: auditd
? :: dbus-daemon
? :: polkitd
? :: irqbalance
? :: systemd-logind
? :: crond
? :: login
? :: firewalld
? :: NetworkManager
? :: kworker/:1H
? :: kworker/:1H
? :: dhclient
? :: tuned
? :: sshd
? :: rsyslogd
? :: master
? :: pickup
? :: qmgr
tty1 :: bash
? :: kworker/:1H
? :: sshd
pts/ :: bash
? :: kworker/:
? :: memcached
? :: kworker/:
? :: kworker/:
? :: kworker/:
? :: kworker/:
? :: kworker/:
pts/ :: ps

显示某个用户的所有进程

可以根据数值ID找到用户(-u),也可以根据用户名(-U)

这里以root为例。参考:【问题】root账号的UID和GID永远是0吗?

ps -fU root 或 ps -fu 0

输出结果完全一样

 显示某个组的所有进程

同上,只不过换成-G

ps -fG 0 或 ps -fG root

根据PID显示进程

-p--pid

[root@localhost home]# ps -fp
UID PID PPID C STIME TTY TIME CMD
root : ? :: login -- root
[root@localhost home]# ps -f --pid
UID PID PPID C STIME TTY TIME CMD
root : ? :: login -- root

也可以一次显示多个进程

[root@localhost home]# ps -f --pid ,
UID PID PPID C STIME TTY TIME CMD
root : ? :: login -- root
root : pts/ :: -bash
[root@localhost home]# ps -fp ,
UID PID PPID C STIME TTY TIME CMD
root : ? :: login -- root
root : pts/ :: -bash

根据tty显示进程

[root@localhost home]# ps -t tty1
PID TTY TIME CMD
tty1 :: bash
[root@localhost home]# ps -ft tty1
UID PID PPID C STIME TTY TIME CMD
root : tty1 :: -bash

显示进程树

对于父子进程,如果父亲死了,子进程的的父进程就变成了init或systemd

显示系统上所有进程的进程树

ps -e --forest

显示给定进程的进程树

-C:Select by command name。这个命令会把name指定进程的所有子进程显示出来

[root@localhost home]# ps -f --forest -C sshd
UID PID PPID C STIME TTY TIME CMD
root : ? :: /usr/sbin/sshd -D
root : ? :: \_ sshd: root@pts/,pts/,pts/
[root@localhost home]# ps -ef --forest | grep -v grep | grep sshd
root : ? :: /usr/sbin/sshd -D
root : ? :: \_ sshd: root@pts/,pts/,pts/

指定查看ps某些列的输出

使用-o选项

ruser,pid,ppid,lwp(线程low weight process),psr(处理器processor),args(用comm也行),etime(elapsed time,自从该进程/线程启动过了多长时间)

[root@localhost home]# ps -o pid,ppid,user,cmd
PID PPID USER CMD
root -bash
root ps -o pid,ppid,user,cmd

根据PID查找进程

[root@localhost home]# ps -f --forest -C sshd
UID PID PPID C STIME TTY TIME CMD
root : ? :: /usr/sbin/sshd -D
root : ? :: \_ sshd: root@pts/,pts/,pts/
[root@localhost home]# ps -p -o comm
COMMAND
sshd

显示一个进程及其所有子进程的pid

[root@localhost home]# ps -C sshd -o pid
PID

显示某一服务执行多长时间

[root@localhost home]# ps -eo comm,etime,user | grep sshd
sshd :: root
sshd :: root

查找当前系统下,CPU 或 内存占用率最高的进程

[root@localhost home]# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
PID PPID CMD %MEM %CPU
/usr/bin/python -Es /usr/sb 0.7 0.0
/usr/bin/python -Es /usr/sb 0.4 0.0
/usr/lib/polkit-/polkitd - 0.3 0.0
/usr/sbin/NetworkManager -- 0.2 0.0
/usr/sbin/rsyslogd -n 0.2 0.0
/usr/lib/systemd/systemd -- 0.1 0.0
sshd: root@pts/,pts/,pts/ 0.1 0.0
/sbin/dhclient -d -q -sf /u 0.1 0.0
/usr/lib/systemd/systemd-ud 0.1 0.0
[root@localhost home]# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
PID PPID CMD %MEM %CPU
/usr/lib/systemd/systemd -- 0.1 0.0
[kthreadd] 0.0 0.0
[ksoftirqd/] 0.0 0.0
[kworker/:0H] 0.0 0.0
[kworker/u256:] 0.0 0.0
[migration/] 0.0 0.0
[rcu_bh] 0.0 0.0
[rcu_sched] 0.0 0.0
[lru-add-drain] 0.0 0.0

对于那些未响应进程,或占用资源奇高的进程可以找到他并杀死

首先找到该进程,然后杀死该进程

Linux命令——ps、pstree

借助watch命令执行实时进程监控

ps命令显示静态信息,可以借助watch命令实时监控进程信息,还能制定监控那些项

watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'

Every .0s: ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head                             Fri Oct  :: 

   PID   PPID CMD                         %MEM %CPU
/usr/bin/python -Es /usr/sb 0.7 0.0
/usr/bin/python -Es /usr/sb 0.4 0.0
/usr/lib/polkit-/polkitd - 0.3 0.0
/usr/sbin/NetworkManager -- 0.2 0.0
/usr/sbin/rsyslogd -n 0.2 0.0
/usr/lib/systemd/systemd -- 0.1 0.0
sshd: root@pts/,pts/,pts/ 0.1 0.0
/sbin/dhclient -d -q -sf /u 0.1 0.0
/usr/lib/systemd/systemd-ud 0.1 0.0

显示安全信息

尤其对于SELinux,如下命令显示安全信息

ps -eM  或  ps --context

也可以指定输出哪些项,使用选项-o

ps -eo  ruser,pid,ppid,lwp(线程low weight process),psr(处理器processor),args(用comm也行),etime(elapsed time,自从该进程/线程启动过了多长时间)

[root@localhost home]# ps -eo  euser,ruser,suser,fuser,f,comm,label
EUSER RUSER SUSER FUSER F COMMAND LABEL
root root root root systemd system_u:system_r:init_t:s0
root root root root kthreadd system_u:system_r:kernel_t:s0
root root root root ksoftirqd/ system_u:system_r:kernel_t:s0
root root root root kworker/:0H system_u:system_r:kernel_t:s0
root root root root kworker/u256: system_u:system_r:kernel_t:s0
root root root root migration/ system_u:system_r:kernel_t:s0
root root root root rcu_bh system_u:system_r:kernel_t:s0

与watch搭配使用动态显示进程信息

watch -n 2 'ps -aef | grep firefox'

pstree

ps命令可以显示当前正在运行的那些进程的信息,但是对于它们之间的关系却显示得不够清晰。在Linux系统中,系统调用fork可以创建子进程,通过子shell也可以创建子进程,Linux系统中进程之间的关系天生就是一棵树,树的根就是进程PID为1的init 或 systemd进程。

最小化安装时,默认没有这个命令。需要单独安装yum -y install psmisc

简介

pstree将运行进程显示为树。 如果省略pid,树将以pid或init为根。 如果指定了用户名,则会显示该用户拥有进程的所有进程树。 pstree在视觉上合并相同的分支,方法是将它们放在方括号中,并在前面添加重复计数

用法演示

最简单的做法

不带任何参数

[root@localhost home]# pstree
systemd─┬─NetworkManager─┬─dhclient
│ └─*[{NetworkManager}]
├─auditd───{auditd}
├─crond
├─dbus-daemon───{dbus-daemon}
├─firewalld───{firewalld}
├─irqbalance
├─login───bash
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─memcached───*[{memcached}]
├─polkitd───*[{polkitd}]
├─rsyslogd───*[{rsyslogd}]
├─sshd───sshd─┬─bash───man───less
│ ├─bash
│ └─bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
└─tuned───*[{tuned}]

显示命令行参数

使用-a参数

[root@localhost home]# pstree -a
systemd --switched-root --system --deserialize
├─NetworkManager --no-daemon
│ ├─dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth0.pid -lf...
│ └─*[{NetworkManager}]
├─auditd
│ └─{auditd}
├─crond -n
├─dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
│ └─{dbus-daemon}
├─firewalld -Es /usr/sbin/firewalld --nofork --nopid
│ └─{firewalld}
├─irqbalance --foreground
├─login
│ └─bash
├─lvmetad -f
├─master -w
│ ├─pickup -l -t unix -u
│ └─qmgr -l -t unix -u
├─memcached -d -u root
│ └─*[{memcached}]
├─polkitd --no-debug
│ └─*[{polkitd}]
├─rsyslogd -n
│ └─*[{rsyslogd}]
├─sshd -D
│ └─sshd
│ ├─bash
│ │ └─man ps
│ │ └─less -s
│ ├─bash
│ └─bash
│ └─pstree -a
├─systemd-journal
├─systemd-logind
├─systemd-udevd
└─tuned -Es /usr/sbin/tuned -l -P
└─*[{tuned}]

强制pstree展开一样的子树

使用-c参数

[root@localhost home]# pstree -c
systemd─┬─NetworkManager─┬─dhclient
│ ├─{NetworkManager}
│ └─{NetworkManager}
├─auditd───{auditd}
├─crond
├─dbus-daemon───{dbus-daemon}
├─firewalld───{firewalld}
├─irqbalance
├─login───bash
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─memcached─┬─{memcached}
│ ├─{memcached}
│ ├─{memcached}
│ ├─{memcached}
│ └─{memcached}
├─polkitd─┬─{polkitd}
│ ├─{polkitd}
│ ├─{polkitd}
│ ├─{polkitd}
│ └─{polkitd}
├─rsyslogd─┬─{rsyslogd}
│ └─{rsyslogd}
├─sshd───sshd─┬─bash───man───less
│ ├─bash
│ └─bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
└─tuned─┬─{tuned}
├─{tuned}
├─{tuned}
└─{tuned}

对特定进程高亮显示

使用-H参数

pstree -H [PID]

[root@localhost home]# ps
PID TTY TIME CMD
pts/ :: bash
pts/ :: ps
[root@localhost home]# pstree -H
systemd─┬─NetworkManager─┬─dhclient
│ └─*[{NetworkManager}]
├─auditd───{auditd}
├─crond
├─dbus-daemon───{dbus-daemon}
├─firewalld───{firewalld}
├─irqbalance
├─login───bash
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─memcached───*[{memcached}]
├─polkitd───*[{polkitd}]
├─rsyslogd───*[{rsyslogd}]
├─sshd───sshd─┬─bash───man───less
│ ├─bash
│ └─bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
└─tuned───*[{tuned}]

显示进程组ID

使用-g参数

[root@localhost home]# pstree -g
systemd()─┬─NetworkManager()─┬─dhclient()
│ ├─{NetworkManager}()
│ └─{NetworkManager}()
├─auditd()───{auditd}()
├─crond()
├─dbus-daemon()───{dbus-daemon}()
├─firewalld()───{firewalld}()
├─irqbalance()
├─login()───bash()
├─lvmetad()
├─master()─┬─pickup()
│ └─qmgr()
├─memcached()─┬─{memcached}()
│ ├─{memcached}()
│ ├─{memcached}()
│ ├─{memcached}()
│ └─{memcached}()
├─polkitd()─┬─{polkitd}()
│ ├─{polkitd}()
│ ├─{polkitd}()
│ ├─{polkitd}()
│ └─{polkitd}()
├─rsyslogd()─┬─{rsyslogd}()
│ └─{rsyslogd}()
├─sshd()───sshd()─┬─bash()───man()───less()
│ ├─bash()
│ └─bash()───pstree()
├─systemd-journal()
├─systemd-logind()
├─systemd-udevd()
└─tuned()─┬─{tuned}()
├─{tuned}()
├─{tuned}()
└─{tuned}()

根据PID排序输出

默认情况下,pstree对有相同祖先的进程按名字排序。借助-n参数可以按pid排序

[root@localhost home]# pstree -n
systemd─┬─systemd-journal
├─lvmetad
├─systemd-udevd
├─auditd───{auditd}
├─dbus-daemon───{dbus-daemon}
├─polkitd───*[{polkitd}]
├─irqbalance
├─systemd-logind
├─crond
├─login───bash
├─firewalld───{firewalld}
├─NetworkManager─┬─*[{NetworkManager}]
│ └─dhclient
├─tuned───*[{tuned}]
├─sshd───sshd─┬─bash───man───less
│ ├─bash
│ └─bash───pstree
├─rsyslogd───*[{rsyslogd}]
├─master─┬─qmgr
│ └─pickup
└─memcached───*[{memcached}]

-p参数可以显示pid

[root@localhost home]# pstree -pn
systemd()─┬─systemd-journal()
├─lvmetad()
├─systemd-udevd()
├─auditd()───{auditd}()
├─dbus-daemon()───{dbus-daemon}()
├─polkitd()─┬─{polkitd}()
│ ├─{polkitd}()
│ ├─{polkitd}()
│ ├─{polkitd}()
│ └─{polkitd}()
├─irqbalance()
├─systemd-logind()
├─crond()
├─login()───bash()
├─firewalld()───{firewalld}()
├─NetworkManager()─┬─{NetworkManager}()
│ ├─{NetworkManager}()
│ └─dhclient()
├─tuned()─┬─{tuned}()
│ ├─{tuned}()
│ ├─{tuned}()
│ └─{tuned}()
├─sshd()───sshd()─┬─bash()───man()───less()
│ ├─bash()
│ └─bash()───pstree()
├─rsyslogd()─┬─{rsyslogd}()
│ └─{rsyslogd}()
├─master()─┬─qmgr()
│ └─pickup()
└─memcached()─┬─{memcached}()
├─{memcached}()
├─{memcached}()
├─{memcached}()
└─{memcached}()

显示特定用户下进程的进程树

[root@localhost home]# pstree root
systemd─┬─NetworkManager─┬─dhclient
│ └─*[{NetworkManager}]
├─auditd───{auditd}
├─crond
├─dbus-daemon───{dbus-daemon}
├─firewalld───{firewalld}
├─irqbalance
├─login───bash
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─memcached───*[{memcached}]
├─polkitd───*[{polkitd}]
├─rsyslogd───*[{rsyslogd}]
├─sshd───sshd─┬─bash───man───less
│ ├─bash
│ └─bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
└─tuned───*[{tuned}]

只显示具体进程的父子信息

使用-s参数

Linux命令——ps、pstree

远程终端链接使用pstree显示乱码

使用-G参数

[root@localhost ~]# pstree -G
systemdqwqNetworkManagerqwqdhclient
x mq2*[{NetworkManager}]
tqagetty
tqauditdqqq{auditd}
tqcrond
tqdbus-daemonqqq{dbus-daemon}
tqfirewalldqqq{firewalld}
tqirqbalance
tqlvmetad
tqmasterqwqpickup
x mqqmgr
tqpolkitdqqq5*[{polkitd}]
tqrsyslogdqqq2*[{rsyslogd}]
tqsshdqqqsshdqwqbashqqqpstree
x mqbashqqqmanqqqless
tqsystemd-journal
tqsystemd-logind
tqsystemd-udevd
mqtunedqqq4*[{tuned}]