Tutorial del comando pstree de Linux para principiantes (8 ejemplos)
Dado que todos los procesos (excepto el primero) de un sistema Linux tienen un padre, a veces resulta más fácil de entender si todos los procesos se muestran en una estructura de árbol. Te alegrará saber que existe una utilidad de línea de comandos -apodada pstree- que muestra un árbol de procesos.
En este tutorial, hablaremos de los fundamentos del comando pstree utilizando algunos ejemplos fáciles de entender. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos aquí se han probado en una máquina Ubuntu 16.04 LTS.
Comando pstree de Linux
Como ya hemos mencionado al principio, el comando pstree muestra un árbol de procesos. A continuación se muestra su sintaxis:
pstree [options]
Y esto es lo que dice la página man de la herramienta sobre ella:
pstree 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, e.g.
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 hap?
pened. This is useful for when pstree is run in a 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.
A continuación se presentan algunos ejemplos al estilo de las preguntas y respuestas que deberían darte una buena idea de cómo funciona el comando pstree:
Q1. ¿Cómo se utiliza el comando pstree?
El uso básico es sencillo: todo lo que tienes que hacer es ejecutar ‘pstree’ sin ninguna opción.
pstree
Así puedes ver cómo pstree produce información relacionada con el proceso en la salida.
Q2. ¿Cómo hacer que pstree incluya también los argumentos de la línea de comandos en la salida?
Esto se puede hacer utilizando la opción de línea de comandos -a.
pstree -a
Así puedes ver que el comando pstree ahora también muestra las opciones de la línea de comandos de algunos procesos.
Q3. ¿Cómo forzar a pstree a expandir subárboles idénticos en la salida?
Por defecto, el comando pstree fusiona las ramas idénticas poniéndolas entre corchetes y anteponiendo el recuento de repeticiones. Algo así:
Sin embargo, si quieres, puedes forzar a la herramienta a expandir árboles idénticos, algo que puedes hacer utilizando la opción de línea de comandos -c.
pstree -c
Q4. ¿Cómo hacer que pstree resalte un proceso concreto?
Si quieres que la herramienta resalte un proceso concreto en la salida, utiliza la opción de línea de comandos -H.
pstree -H [PID]
Donde PID es el ID del proceso que quieres resaltar. Por ejemplo, he resaltado el proceso firefox en mi sistema utilizando el siguiente comando:
pstree -H 3124
Así puedes ver que el nombre «firefox» está ligeramente resaltado en comparación con otros nombres.
Q5. ¿Cómo hacer que pstree muestre los ID de los grupos de procesos en la salida?
Para ello, utiliza la opción de línea de comandos -g.
pstree -g
Así podrás ver que los ID de los grupos de procesos se muestran como números decimales entre paréntesis después de cada nombre de proceso.
Q6. ¿Cómo hacer que pstree ordene los procesos en función de los PID?
Por defecto, pstree ordena los procesos con el mismo ancestro por su nombre. Sin embargo, si quieres, puedes hacer que pstree ordene los procesos también por PIDs, algo que puedes hacer utilizando la opción de línea de comandos -n.
pstree -n
Ten en cuenta que este tipo de ordenación también se conoce como ordenación numérica.
Q7. ¿Cómo hacer que pstree muestre el árbol de procesos específico de un usuario?
Si quieres que pstree muestre todos los árboles de procesos con raíz en los procesos que pertenecen a un usuario concreto, lo único que tienes que hacer es pasar el nombre de ese usuario como entrada al comando.
Por ejemplo,
pstree himanshu
En este caso, se produjo la siguiente salida en mi sistema:
Q8. ¿Cómo restringir Pstree a un proceso concreto?
Si quieres que pstree muestre sólo la información de los padres e hijos de un proceso concreto, utiliza la opción -s.
pstree -s [PID]
Por ejemplo, yo quería limitar la salida de Pstree sólo al proceso de Firefox en mi sistema, así que ejecuté el siguiente comando:
pstree -s 3124
Y esta es la salida que mostró la herramienta:
Conclusión
Dependiendo del tipo de trabajo que realices, el comando pstree puede ser de gran ayuda. Aquí, en este tutorial, hemos hablado de algunas opciones clave de la línea de comandos que ofrece esta herramienta. Para más información, dirígete a su página man.