El comando pstree de GNU/Linux permite ver al árbol de procesos del sistema, sin embargo, antes que todo, habría que hacer una breve introducción teórica.

El proceso de arranque init en GNU/Linux es el primer proceso que se ejecuta en el sistema, además de ser el más importante, y de quien dependen el resto de los procesos. Es el kernel quien cede el control al init. A partir de init donde se crean los primeros procesos hijos, y a su vez estos ejecutan otros procesos, obteniéndose un árbol de procesos.

Init, lee el archivo /etc/ttytab para ver cuantas terminales hay, y mediante fork crea un proceso hijo para cada terminal. Cada proceso hijo ejecuta getty, que es quien imprime el prompt del login y obtiene el nombre de usuario. Cuando el usuario entra al sistema, se ejecuta login con el nombre como argumento y se ejecuta el Shell de ese usuario. El shell del usuario se especifica en el /etc/passwd, generalmente sh. El Shell espera por un comando y luego lanza un FORK y un EXEC por cada comando.

Es así, que el shell es hijo del init, los procesos de usuario los nietos, y todos los procesos forman parte de un mismo árbol.

En los sistemas operativos GNU Linux, para visualizar ese arbol podemos hacerlo a través del comando pstree. Por ejemplo, ejecutamos pstree -pl, donde los argumentos p y l, respectivamente muestran los pid de los procesos y no truncan líneas largas, podemos obtener algo como el siguiente fragmento:

init(1)-+-NetworkManager(4530)---{NetworkManager}(5168)
|-NetworkManagerD(4544)
|-acpid(4328)
|-atd(5328)
|-avahi-daemon(4586)---avahi-daemon(4587)
|-bonobo-activati(5662)---{bonobo-activati}(5666)
.
.
.
|-gnome-terminal(7118)-+-bash(7123)-+-pstree(7524)
|                      |            `-watch(7162)
|                      |-gnome-pty-helpe(7122)
|                      `-{gnome-terminal}(7124)
`-inetd(4927)

Otra alternativa, es utilizar el clásico ps, especificando el argumento --forest. Por ejemplo, ps axl --forest:

F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
.
.
0  1000  7118     1  20   0  98792 23384 -      Sl   ?          0:06 gnome-terminal
0  1000  7122  7118  20   0   2912   856 -      S    ?          0:00  \_ gnome-pty-helper
0  1000  7123  7118  20   0   5648  3032 -      Rs   pts/0      0:00  \_ bash
0  1000  7162  7123  20   0   3128   884 -      T    pts/0      0:00      \_ watch -n1 mysqladmin -uroot processlist
0  1000  7544  7123  20   0   2424   828 -      R+   pts/0      0:00      \_ ps axl --forest