Linux pstree command

Updated: 03/06/2020 by Computer Hope
pstree command

On Unix-like operating systems, the pstree command displays processes in tree format.

This page describes the GNU/Linux version of pstree.

Description

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

Identical branches are merged 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 shown with the process name in curly braces; for example:

icecast2---13*[{icecast2}]

If pstree is called as pstree.x11, then it prompts the user at the end of the line to press return and does not return until that happens. Executing this command is useful for when pstree is run in an xterminal.

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

Syntax

pstree [-a, --arguments] [-c, --compact] 
       [-h, --highlight-all, -Hpid, --highlight-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 (American Standard Code for Information Interchange) 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 (Process IDentifier) 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. When 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 only works if pstree is compiled with SELinux support.

Examples

pstree -h

Display all processes as a tree, with the current process and its ancestors highlighted. Output resembles 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

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