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


以树状图只显示进程的名字,且相同进程合并显示:
格式:pstree
[root@localhost ~]# pstree
init─┬─2*[.sshd───{.sshd}]
     ├─NetworkManager
     ├─abrtd
     ├─acpid
     ├─atd
     ├─auditd───{auditd}
     ├─automount───4*[{automount}]
     ├─bonobo-activati───{bonobo-activat}
     ├─certmonger
     ├─console-kit-dae───63*[{console-kit-da}]
     ├─crond
     ├─cupsd
     ├─2*[dbus-daemon]
     ├─dbus-launch
     ├─devkit-power-da
     ├─2*[f62───8*[{f62}]]
     ├─gconfd-2
     ├─gdm-binary─┬─gdm-simple-slav─┬─Xorg
     │            │                 ├─gdm-session-wor
     │            │                 ├─gnome-session─┬─at-spi-registry
     │            │                 │               ├─gdm-simple-gree
     │            │                 │               ├─gnome-power-man
     │            │                 │               ├─metacity
     │            │                 │               ├─polkit-gnome-au
     │            │                 │               └─{gnome-session}
     │            │                 └─{gdm-simple-sla}
     │            └─{gdm-binary}
     ├─gnome-settings-───{gnome-settings}
     ├─gvfsd
     ├─hald─┬─hald-runner─┬─hald-addon-acpi
     │      │             └─hald-addon-inpu
     │      └─{hald}
     ├─irqbalance
     ├─memcached───5*[{memcached}]
     ├─5*[mingetty]
     ├─modem-manager
     ├─mysqld_safe───mysqld───22*[{mysqld}]
     ├─nginx───4*[nginx]
     ├─pcscd───{pcscd}
     ├─php-fpm───4*[php-fpm]
     ├─polkitd
     ├─portreserve
     ├─pulseaudio───3*[{pulseaudio}]
     ├─redis-server───2*[{redis-server}]
     ├─rpc.statd
     ├─rpcbind
     ├─rsyslogd───3*[{rsyslogd}]
     ├─rtkit-daemon───2*[{rtkit-daemon}]
     ├─2*[sendmail]
     ├─sshd───sshd───bash───pstree
     ├─svnserve
     ├─szovajrhbf───3*[{szovajrhbf}]
     ├─udevd───2*[udevd]
     ├─5*[wjbdddweva]
     ├─wpa_supplicant
     └─xinetd
[root@localhost ~]# 


以树状图显示进程同时还显示PID:
格式:pstree -p




以树状图显示进程PID为<pid>的进程以及子孙进程,如果有-p参数则同时显示每个进程的PID:
格式:pstree [-p] <pid>


[root@localhost ~]# pstree 2500
mysqld_safe───mysqld───22*[{mysqld}]


[root@localhost ~]# pstree -p 2500
mysqld_safe(2500)───mysqld(2972)─┬─{mysqld}(3062)
                                 ├─{mysqld}(3063)
                                 ├─{mysqld}(3064)
                                 ├─{mysqld}(3065)
                                 ├─{mysqld}(3066)
                                 ├─{mysqld}(3067)
                                 ├─{mysqld}(3068)
                                 ├─{mysqld}(3069)
                                 ├─{mysqld}(3070)
                                 ├─{mysqld}(3071)
                                 ├─{mysqld}(3082)
                                 ├─{mysqld}(3083)
                                 ├─{mysqld}(3084)
                                 ├─{mysqld}(3085)
                                 ├─{mysqld}(3173)
                                 ├─{mysqld}(10962)
                                 ├─{mysqld}(13819)
                                 ├─{mysqld}(28967)
                                 ├─{mysqld}(14425)
                                 ├─{mysqld}(20321)
                                 ├─{mysqld}(20429)
                                 └─{mysqld}(20755)
[root@localhost ~]# 




以树状图显示进程,相同名称的进程不合并显示,并且会显示命令行参数,如果有-p参数则同时显示每个进程的PID。
格式:pstree -a


注:因为pstree输出的信息可能比较多,所以最好与more/less配合使用,使用上下箭头查看,按q退出。
[root@localhost ~]# pstree -p | less
Logo

更多推荐