linux ps命令


3.pstree以树状结构显示系统中进程的父子关系

回到顶部

[root@initroot ~]# pstree [-A|U] [-up]
选项与参数:
-A :各进程树之间的连接以 ASCII 字符来连接;
-U :各进程树之间的连接以万国码的字符来连接。在某些终端接口下可能会有错误;
-p :并同时列出每个 process 的 PID;
-u :并同时列出每个 process 的所属账号名称。
范例一:列出目前系统上面所有的进程树的相关性:
[root@initroot ~]# pstree
systemd─┬─AliYunDun───22*[{AliYunDun}]
        ├─AliYunDunUpdate───3*[{AliYunDunUpdate}]
        ├─2*[agetty]
        ├─aliyun-service───2*[{aliyun-service}]
        ├─atd
        ├─auditd───{auditd}
        ├─crond
        ├─dbus-daemon
        ├─dhclient
        ├─mysqld_safe───mysqld───18*[{mysqld}]
        ├─nginx───nginx
        ├─npm─┬─node───10*[{node}]
        │     └─10*[{npm}]
        ├─ntpd
        ├─php-fpm───15*[php-fpm]
        ├─polkitd───6*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd─┬─2*[sshd───sftp-server]
        │      ├─sshd───bash
        │      └─sshd───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        └─tuned───4*[{tuned}]
              
[root@initroot ~]# pstree -A
systemd-+-AliYunDun---22*[{AliYunDun}]
        |-AliYunDunUpdate---3*[{AliYunDunUpdate}]
        |-2*[agetty]
        |-aliyun-service---2*[{aliyun-service}]
        |-atd
        |-auditd---{auditd}
        |-crond
        |-dbus-daemon
        |-dhclient
        |-mysqld_safe---mysqld---19*[{mysqld}]
        |-nginx---nginx
        |-npm-+-node---10*[{node}]
        |     `-10*[{npm}]
        |-ntpd
        |-php-fpm---15*[php-fpm]
        |-polkitd---6*[{polkitd}]
        |-rsyslogd---2*[{rsyslogd}]
        |-sshd-+-2*[sshd---sftp-server]
        |      |-sshd---bash
        |      `-sshd---bash---pstree
        |-systemd-journal
        |-systemd-logind
        |-systemd-udevd
        `-tuned---4*[{tuned}]
# 注意一下,为了节省版面,所以已经删去很多进程了!
范例二:承上题,同时秀出 PID 与 users
[root@initroot ~]# pstree -Aup
systemd(1)-+-AliYunDun(2586)-+-{AliYunDun}(2587)
           |                 |-{AliYunDun}(2588)
           |                 |-{AliYunDun}(2599)
           |                 |-{AliYunDun}(2600)
           |                 |-{AliYunDun}(2601)
           |                 |-{AliYunDun}(2602)
           |                 |-{AliYunDun}(2603)
           |                 |-{AliYunDun}(2604)
           |                 |-{AliYunDun}(2605)
           |                 |-{AliYunDun}(2606)
           |                 |-{AliYunDun}(2607)
           |                 |-{AliYunDun}(2608)
           |                 |-{AliYunDun}(2609)
           |                 |-{AliYunDun}(2610)
           |                 |-{AliYunDun}(2611)
           |                 |-{AliYunDun}(2612)
           |                 |-{AliYunDun}(2613)
           |                 |-{AliYunDun}(2614)
           |                 |-{AliYunDun}(2615)
           |                 |-{AliYunDun}(2616)
           |                 |-{AliYunDun}(30927)
           |                 `-{AliYunDun}(32115)
           |-AliYunDunUpdate(2530)-+-{AliYunDunUpdate}(2531)
           |                       |-{AliYunDunUpdate}(2532)
           |                       `-{AliYunDunUpdate}(2534)
           |-agetty(530)
           |-agetty(531)
           |-aliyun-service(797)-+-{aliyun-service}(838)
           |                     `-{aliyun-service}(842)
           |-atd(506)
           |-auditd(460)---{auditd}(461)
           |-crond(501)
           |-dbus-daemon(487,dbus)
           |-dhclient(717)
           |-mysqld_safe(927,mysql)---mysqld(1193)-+-{mysqld}(1203)
           |                                       |-{mysqld}(1205)
           |                                       |-{mysqld}(1206)
           |                                       |-{mysqld}(1207)
           |                                       |-{mysqld}(1208)
           |                                       |-{mysqld}(1209)
           |                                       |-{mysqld}(1210)
           |                                       |-{mysqld}(1211)
           |                                       |-{mysqld}(1212)
           |                                       |-{mysqld}(1213)
           |                                       |-{mysqld}(1214)
           |                                       |-{mysqld}(1217)
           |                                       |-{mysqld}(1218)
           |                                       |-{mysqld}(1219)
           |                                       |-{mysqld}(1220)
           |                                       |-{mysqld}(1221)
           |                                       |-{mysqld}(1222)
           |                                       `-{mysqld}(1240)
           |-nginx(10373)---nginx(10374,nginx)
           |-npm(15728)-+-node(15741)-+-{node}(15742)
           |            |             |-{node}(15743)
           |            |             |-{node}(15744)
           |            |             |-{node}(15745)
           |            |             |-{node}(15746)
           |            |             |-{node}(15747)
           |            |             |-{node}(15748)
           |            |             |-{node}(15749)
           |            |             |-{node}(15750)
           |            |             `-{node}(15751)
           |            |-{npm}(15729)
           |            |-{npm}(15730)
           |            |-{npm}(15731)
           |            |-{npm}(15732)
           |            |-{npm}(15733)
           |            |-{npm}(15734)
           |            |-{npm}(15736)
           |            |-{npm}(15737)
           |            |-{npm}(15738)
           |            `-{npm}(15739)
           |-ntpd(492,ntp)
           |-php-fpm(10351)-+-php-fpm(3290,apache)
           |                |-php-fpm(8272,apache)
           |                |-php-fpm(9137,apache)
           |                |-php-fpm(10353,apache)
           |                |-php-fpm(10354,apache)
           |                |-php-fpm(10355,apache)
           |                |-php-fpm(10356,apache)
           |                |-php-fpm(10357,apache)
           |                |-php-fpm(12432,apache)
           |                |-php-fpm(12433,apache)
           |                |-php-fpm(13209,apache)
           |                |-php-fpm(13392,apache)
           |                |-php-fpm(13399,apache)
           |                |-php-fpm(27911,apache)
           |                `-php-fpm(28122,apache)
           |-polkitd(496,polkitd)-+-{polkitd}(509)
           |                      |-{polkitd}(511)
           |                      |-{polkitd}(513)
           |                      |-{polkitd}(514)
           |                      |-{polkitd}(515)
           |                      `-{polkitd}(521)
           |-rsyslogd(791)-+-{rsyslogd}(822)
           |               `-{rsyslogd}(843)
           |-sshd(1242)-+-sshd(31589)---sftp-server(31591)
           |            |-sshd(32116)---bash(32118)
           |            |-sshd(32277)---sftp-server(32279)
           |            `-sshd(32423)---bash(32429)---pstree(32464)
           |-systemd-journal(339)
           |-systemd-logind(497)
           |-systemd-udevd(357)
           `-tuned(782)-+-{tuned}(1108)
                        |-{tuned}(1111)
                        |-{tuned}(1115)
                        `-{tuned}(1215)
在括号 () 内的即是 PID 以及该进程的 owner 喔!一般来说,如果该进程的所有人与父进程同, 就不会列出,但是如果与父进程不一样,那就会列出该进程的拥有者!看上面 13927 就转变成 peter 了 如果要找进程之间的相关性,这个 pstree 真是好用到不行!直接输入 pstree 可以查到进程相关性, 如上表所示,还会使用线段将相关性进程连结起来哩! 一般链接符号可以使用 ASCII 码即可,但 有时因为语系问题会主动的以 Unicode 的符号来链接, 但因为可能终端机无法支持该编码,或许会 造成乱码问题。因此可以加上 -A 选项来克服此类线段乱码问题。
由 pstree 的输出我们也可以很清楚的知道,所有的进程都是依附在 systemd 这支进程底下的! 仔 细看一下,这支进程的 PID 是一号喔!因为他是由 Linux 核心所主动呼叫的第一支程序!所以 PID 就是一号了。 这也是我们刚刚提到僵尸进程时有提到,为啥发生僵尸进程需要重新启动? 因为 systemd 要重新启动,而重新启动 systemd 就是 reboot 啰!
如果还想要知道 PID 与所属使用者,加上 -u 及 -p 两个参数即可。我们前面不是一直提到, 如果 子进程挂点或者是老是砍不掉子进程时,该如何找到父进程吗?呵呵!用这个 pstree 就对了! ^_^

pstree命令以树状结构显示系统中的进程,可以更直观的看出进程之间的父子关系

Usage: pstree [-acglpsStuZ] [ -h | -H PID ] [ -n | -N type ]
[ -A | -G | -U ] [ PID | USER ]
pstree -V
Display a tree of processes.
-a, --arguments show command line arguments
-A, --ascii use ASCII line drawing characters
-c, --compact don't compact identical subtrees
-h, --highlight-all highlight current process and its ancestors
-H PID,
--highlight-pid=PID highlight this process and its ancestors
-g, --show-pgids show process group ids; implies -c
-G, --vt100 use VT100 line drawing characters
-l, --long don't truncate long lines
-n, --numeric-sort sort output by PID
-N type,
--ns-sort=type sort by namespace type (cgroup, ipc, mnt, net, pid,
user, uts)
-p, --show-pids show PIDs; implies -c
-s, --show-parents show parents of the selected process
-S, --ns-changes show namespace transitions
-t, --thread-names show full thread names
-T, --hide-threads hide threads, show only processes
-u, --uid-changes show uid transitions
-U, --unicode use UTF-8 (Unicode) line drawing characters
-V, --version display version information
-Z, --security-context
show SELinux security contexts
PID start at this PID; default is 1 (init)
USER show only trees rooted at processes of this user

initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读