端くれプログラマの備忘録 Unix [Unix] pstree – プロセスの親子関係をわかりやすく表示する

[Unix] pstree – プロセスの親子関係をわかりやすく表示する

インストール (CentOS 7)

psmiscというパッケージに含まれているらしい。

$ yum info psmisc
Available Packages
Name        : psmisc
Arch        : x86_64
Version     : 22.20
Release     : 15.el7
Size        : 141 k
Repo        : base/7/x86_64
Summary     : Utilities for managing processes on your system
URL         : http://sourceforge.net/projects/psmisc
License     : GPLv2+
Description : The psmisc package contains utilities for managing processes on your
            : system: pstree, killall and fuser.  The pstree command displays a  tree
            : structure of all of the running processes on your system.  The  killall
            : command sends a specified signal (SIGTERM if nothing is specified)  to
            : processes identified by name.  The fuser command identifies the PIDs
            : of processes that are using specified files or filesystems.

インストールする。

$ sudo yum -y install psmisc

使い方

全プロセス(プロセスID1を先祖に持つプロセス)をツリー形式で表示する。子プロセスが複数存在する場合は、7*といったように冒頭にその個数が表示される。画面に収まり切れない場合はmoreでつなぐと良い。

$ pstree
systemd─┬─2*[agetty]
        ├─auditd───{auditd}
        ├─chronyd
        ├─crond
        ├─dbus-daemon
        ├─firewalld───{firewalld}
        ├─gssproxy───5*[{gssproxy}]
        ├─httpd───10*[httpd]
        ├─master─┬─pickup
        │        └─qmgr
        ├─mysqld_safe───mysqld───18*[{mysqld}]
        ├─polkitd───6*[{polkitd}]
        ├─rpcbind
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───sshd───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        └─tuned───4*[{tuned}]

-p オプションを指定するとプロセスIDも表示される。

$ pstree -p
systemd(1)─┬─agetty(3432)
           ├─agetty(3433)
           ├─auditd(1610)───{auditd}(1620)
           ├─chronyd(2480)
           ├─crond(3436)
           ├─dbus-daemon(2461)
           ├─firewalld(2500)───{firewalld}(2926)
           ├─gssproxy(2462)─┬─{gssproxy}(2464)
           │                ├─{gssproxy}(2465)
           │                ├─{gssproxy}(2466)
           │                ├─{gssproxy}(2467)
           │                └─{gssproxy}(2468)
           ├─httpd(3019)─┬─httpd(18408)
           │             ├─httpd(18457)
           │             ├─httpd(18827)
           │             ├─httpd(21353)
           │             ├─httpd(24016)
           │             ├─httpd(24564)
           │             ├─httpd(25239)
           │             ├─httpd(25249)
           │             ├─httpd(25292)
           │             └─httpd(25293)
           ├─master(4963)─┬─pickup(28526)
           │              └─qmgr(4965)
           ├─mysqld_safe(3062)───mysqld(3282)─┬─{mysqld}(3294)
           │                                  ├─{mysqld}(3302)
           │                                  ├─{mysqld}(3303)
           │                                  ├─{mysqld}(3304)
           │                                  ├─{mysqld}(3305)
           │                                  ├─{mysqld}(3306)
           │                                  ├─{mysqld}(3307)
           │                                  ├─{mysqld}(3308)
           │                                  ├─{mysqld}(3309)
           │                                  ├─{mysqld}(3310)
           │                                  ├─{mysqld}(3311)
           │                                  ├─{mysqld}(3348)
           │                                  ├─{mysqld}(3349)
           │                                  ├─{mysqld}(3350)
           │                                  ├─{mysqld}(3351)
           │                                  ├─{mysqld}(3352)
           │                                  ├─{mysqld}(3353)
           │                                  └─{mysqld}(3457)
           ├─polkitd(2458)─┬─{polkitd}(2463)
           │               ├─{polkitd}(2469)
           │               ├─{polkitd}(2471)
           │               ├─{polkitd}(2473)
           │               ├─{polkitd}(2475)
           │               └─{polkitd}(2476)
           ├─rpcbind(2454)
           ├─rsyslogd(3425)─┬─{rsyslogd}(3439)
           │                └─{rsyslogd}(3441)
           ├─sshd(3431)───sshd(28600)───sshd(28602)───bash(28603)───pstree(28751)
           ├─systemd-journal(1298)
           ├─systemd-logind(2456)
           ├─systemd-udevd(3374)
           └─tuned(3017)─┬─{tuned}(3193)
                         ├─{tuned}(3196)
                         ├─{tuned}(3200)
                         └─{tuned}(3264)

プロセスIDを指定すると、そのプロセスを親に持つプロセスだけを表示できる。

$ pstree 3019
httpd───10*[httpd]

$ pstree 3019 -p
httpd(3019)─┬─httpd(18408)
            ├─httpd(18457)
            ├─httpd(18827)
            ├─httpd(21353)
            ├─httpd(24016)
            ├─httpd(24564)
            ├─httpd(25239)
            ├─httpd(25249)
            ├─httpd(25292)
            └─httpd(25293)

参考サイト

【 pstree 】コマンド――プロセスの親子関係を分かりやすく表示する:Linux基本コマンドTips(7) – @IT
https://www.atmarkit.co.jp/ait/articles/1603/29/news024.html

CentOS7を最小インストールしたらpstreeがなかった – Qiita
https://qiita.com/nekootoko3/items/b9159d13cd4d3e689aca