Linux pstree command

Updated: 04/26/2017 by Computer Hope

About pstree

pstree displays processes in tree format.

The pstree command shows running processes as a tree. The tree is rooted at either pid or init if pid is omitted. If a user name is specified, all process trees rooted at processes owned by that user are shown.

pstree visually merges identical branches by putting them in square brackets and prefixing them with the repetition count, for example:

init-+-getty
     |-getty
     |-getty
     `-getty

becomes

init---4*[getty]

Child threads of a process are found under the parent process and are shown with the process name in curly braces, e.g.

icecast2---13*[{icecast2}]

If pstree is called as pstree.x11 then it will prompt the user at the end of the line to press return and will not return until that has happened. Doing this command is useful for when pstree is run in an xterminal.

Certain kernel or mount parameters, such as the hidepid option for procfs, will hide information for some processes. In these situations pstree will attempt to build the tree without this information, showing process names as question marks.

pstree syntax

pstree [-a, --arguments] [-c, --compact] 
       [-h, --highlight-all, -Hpid, --high‐light-pid pid] [-g] --show-pgids] 
       [-l, --long] [-n, --numeric-sort] [-p, --show-pids] [-s, --show-parents] 
       [-u, --uid-changes] [-Z, --security-context] 
       [-A, --ascii, -G, --vt100, -U, --unicode] [pid, user]
pstree -V, --version

Options

-a Show command line arguments. If the command line of a process is swapped out, that process is shown in parentheses. -a implicitly disables compaction for processes but not threads.
-A Use ASCII characters to draw the tree.
-c Disable compaction of identical subtrees. By default, subtrees are compacted whenever possible.
-G Use VT100 line drawing characters.
-h Highlight the current process and its ancestors. This switch is a no-op if the terminal doesn't support highlighting or if neither the current process nor any of its ancestors are in the subtree being shown.
-H Like -h, but highlight the specified process instead. Unlike with -h, pstree fails when using -H if highlighting is not available.
-g Show PGIDs. Process Group IDs are shown as decimal numbers in parentheses after each process name. -p implicitly disables compaction. If both PIDs and PGIDs are displayed then PIDs are shown first.
-l Display long lines. By default, lines are truncated to the display width or 132 if output is sent to a non-tty or if the display width is unknown.
-n Sort processes with the same ancestor by PID instead of by name. (Numeric sort.)
-p Show PIDs. PIDs are shown as decimal numbers in parentheses after each process name. -p implicitly disables compaction.
-s Show parent processes of the specified process.
-u Show uid transitions. Whenever the uid of a process differs from the uid of its parent, the new uid is shown in parentheses after the process name.
-U Use UTF-8 (Unicode) line drawing characters. Under Linux 1.1-54 and above, UTF-8 mode is entered on the console with echo -e ' 33%8' and left with echo -e ' 33%@'
-V Display version information.
-Z (SELinux) Show security context for each process. This flag will only work if pstree is compilied with SELinux support.

pstree examples

pstree -h

Display all processes as a tree, with the current process and its ancestors highlighted. Output will resemble the following:

init─┬─NetworkManager─┬─dhclient
     │                ├─dnsmasq
     │                └─3*[{NetworkManager}]
     ├─accounts-daemon───2*[{accounts-daemon}]
     ├─atd
     ├─avahi-daemon───avahi-daemon
     ├─bluetoothd
     ├─console-kit-dae───63*[{console-kit-dae}]
     ├─cron
     ├─cupsd
     ├─dbus-daemon
     ├─dd
     ├─6*[getty]
     ├─klogd
     ├─lightdm─┬─Xorg
     │         ├─lightdm─┬─init─┬─apache2───2*[apache2───26*[{apache2}]]
     │         │         │      ├─at-spi-bus-laun─┬─dbus-daemon
     │         │         │      │                 └─3*[{at-spi-bus-laun}]
     │         │         │      ├─at-spi2-registr───{at-spi2-registr}
     │         │         │      ├─dbus-daemon
     │         │         │      ├─dropbox───29*[{dropbox}]
     │         │         │      ├─gconfd-2
     │         │         │      ├─gimp─┬─script-fu
     │         │         │      │      └─2*[{gimp}]
     │         │         │      ├─gnome-terminal─┬─2*[bash───vim]
     │         │         │      │                ├─bash───pstree
     │         │         │      │                ├─gnome-pty-helpe
     │         │         │      │                └─3*[{gnome-terminal}]
     │         │         │      ├─gvfs-afc-volume───2*[{gvfs-afc-volume}]
     │         │         │      ├─gvfs-gphoto2-vo───{gvfs-gphoto2-vo}
     │         │         │      ├─gvfs-mtp-volume───{gvfs-mtp-volume}
     │         │         │      ├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}]
     │         │         │      ├─gvfsd───{gvfsd}
     │         │         │      ├─gvfsd-fuse───4*[{gvfsd-fuse}]
     │         │         │      ├─gvfsd-metadata───{gvfsd-metadata}
     │         │         │      ├─indicator-appli───{indicator-appli}
     │         │         │      ├─lxsession─┬─lxpanel───2*[{lxpanel}]
     │         │         │      │           ├─nm-applet───2*[{nm-applet}]
     │         │         │      │           ├─openbox───{openbox}
     │         │         │      │           ├─pcmanfm───2*[{pcmanfm}]
     │         │         │      │           └─2*[{lxsession}]
     │         │         │      ├─menu-cached───2*[{menu-cached}]
     │         │         │      ├─ssh-agent
     │         │         │      ├─2*[upstart-dbus-br]
     │         │         │      ├─upstart-event-b
     │         │         │      ├─upstart-file-br
     │         │         │      ├─xclip
     │         │         │      ├─xfce4-notifyd
     │         │         │      └─xfconfd
     │         │         └─{lightdm}
     │         └─2*[{lightdm}]
     ├─modem-manager
     ├─mysqld───16*[{mysqld}]
     ├─ntpd
     ├─packagekitd───2*[{packagekitd}]
     ├─polkitd───2*[{polkitd}]
     ├─sshd
     ├─syslogd
     ├─systemd-logind
     ├─systemd-udevd
     ├─udisksd───4*[{udisksd}]
     ├─upstart-file-br
     ├─upstart-socket-
     ├─upstart-udev-br
     └─buddy-friendd───2*[{friendd}]

ps — Report the status of a process or processes.
top — Display a sortable, continually-updated list of processes.