Visualizar árbol de procesos en Linux con pstree

En la píldora de hoy vamos a trabajar con pstree, un pequeño programa que nos permitirá ver el árbol de procesos activos, en nuestros sistemas GNU Linux. Hay que recordar que recientemente hablamos de otro programa similar, aunque en ese caso se trataba de ‘tree’, una herramienta que nos permitiría ver el árbol de directorios.

Sobre pstree

Tal y como hemos comentado se trata de un programa que muestra los procesos, desde la línea de comandos, en forma de diagrama de árbol. Difiere del popular ‘ps’ en varios aspectos. Entre los que destaca que este último muestra los procesos en una lista en lugar de un diagrama, pero proporciona información más detallada sobre estos.

El programa pstree facilita información sobre la finalización de una serie de procesos relacionados entre sí, esto es, todos los descendientes de un proceso particular. El programa deja claro desde un principio que proceso es el primario y cuales son los secundarios. Esto evita buscar las relaciones entre los diversos procesos de manera manual.

Trabajando con pstree en CentOS

Ya sabéis que CentOS es el sistema operativo que más uso últimamente. En cualquier caso, su uso es similar en la mayoría de las distribuciones.

Su forma más común de uso es, desde la línea de comandos, la siguiente:

  1. pstree [opciones]

Consulta su página de man podemos encontrar las siguientes indicaciones:

  1.        pstree - display a tree of processes
  2.  
  3. SYNOPSIS
  4.        pstree [-a, --arguments] [-c, --compact] [-h, --highlight-all, -Hpid, --highlight-pid pid]
  5.        [-g] --show-pgids] [-l, --long] [-n, --numeric-sort] [-N, --ns-sortns [-p, --show-pids]
  6.        [-s, --show-parents] [-S, --ns-changes] [-u, --uid-changes] [-Z, --security-context]
  7.        [-A, --ascii, -G, --vt100, -U, --unicode] [pid, user]
  8.        pstree -V, --version

Veamos una salida utilizando el comando sin parámetros:

  1. root@raspberrypi:~# pstree
  2. systemd─┬─2*[agetty]
  3.         ├─avahi-daemon───avahi-daemon
  4.         ├─cron
  5.         ├─dbus-daemon
  6.         ├─dhcpcd
  7.         ├─fail2ban-server───2*[{fail2ban-server}]
  8.         ├─master─┬─pickup
  9.         │        ├─qmgr
  10.         │        └─tlsmgr
  11.         ├─monit───{monit}
  12.         ├─ntpd
  13.         ├─rsyslogd─┬─{in:imklog}
  14.         │          ├─{in:imuxsock}
  15.         │          └─{rs:main Q:Reg}
  16.         ├─snmpd
  17.         ├─sshd───sshd───bash───pstree
  18.         ├─systemd-journal
  19.         ├─systemd-logind
  20.         ├─systemd-udevd
  21.         └─thd

Con el parámetro “-a” , nos muestra la línea de comandos utilizada. Por ejemplo, si el comando utiliza la ruta a un fichero de configuración.

Por defecto se inhabilita la visualización en el árbol de los nombres repetidos. Para evitar esto, podemos utilizar el parámetro “-c

Si nos interesa podemos ver el árbol de un proceso específico, de la siguiente manera:

  1. pstree -H [PID]

Un ejemplo sería:

Utilizando el parámetro “-g”, veremos los procesos agrupados por grupo.

Los datos de salida del programa están ordenados de manera alfabética. En cambio, podemos indicar que la salida sea basada en los números de PID, utilizando el parámetro “-n

Veamos una combinación de varios de los parámetros:

De forma fácil podemos ver el árbol de procesos de un usuario único, de la siguiente manera, mediante la opción «-u» :

  1. root@raspberrypi:~# pstree -ucgn snmp
  2. snmpd(705)

Lo dejamos aquí, espero que en algún momento os sea de utilidad. Nos vamos leyendo ^.^

Para el artículo me he servido de la siguientes fuentes:

linfo.org – The pstree Command

HowTheForge.com – Linus pstree Command Tutorial for Beginners (8 Examples)