Introducción a los procesos en Linux

Los procesos en Linux son ni más ni menos que programas que están corriendo en un momento dado. Algunos de ellos inician a su vez otros procesos, y así sucesivamente en algunos casos. Cuando un proceso dado inicia otro, se dice que el primero es el padre del segundo (o lo que es lo mismo, que el segundo es el hijo del primero).

En la mayoría de las distribuciones actuales (Debian desde la versión 8, Ubuntu desde 15.04, CentOS desde 7.0), el primer proceso que corre se llama systemd, mientras que en versiones anteriores (muchas de las cuales todavía se encuentran vigentes) se trataba de init. Sin entrar en mayores detalles, podemos decir que tanto systemd como init se encarga de iniciar una serie de procesos necesarios para el funcionamiento del sistema, los que a su vez originarán otros hijos.

Herramientas para listar procesos en Linux

Para poder observar la relación entre procesos padre y sus hijos, disponemos de una utilidad llamada pstree (de process tree, o árbol de procesos) que nos permite visualizar los procesos de nuestro sistema y la relación que existe entre ellos. Si la utilizamos con la opción -p, podremos ver el Process IDentification (comúnmente llamado PID) de cada proceso. En este contexto, decimos que

Si un proceso A es padre de otro B, el PID de A es el Parent PID (PPID) de B.

Veamos un ejemplo en la Fig. 1:

Salida del comando pstree en Linux - Observando procesos
Figura 1: Salida del comando pstree en Linux – Observando procesos

Resaltado en amarillo podemos ver a pstree, que es el comando que generó la salida que vemos por pantalla. Su PID es 3046 y su PPID es 2942. De la misma manera, podemos ver que el PID de systemd es 1.

El rey: ps

A pesar de lo útil que es pstree, el comando más conocido y utilizado para listar procesos es ps. Con las opciones -ef o aux (sin guión medio al comienzo) es posible visualizar rápidamente -con distinto grado de detalle- el listado de procesos que están corriendo en nuestro sistema, como podemos ver en la Fig. 2:

[pastacode lang=»bash» manual=»ps%20-ef%20%7C%20head%20-n%205%0Aps%20aux%20%7C%20head%20-n%205″ message=»» highlight=»» provider=»manual»/]

Visualizando procesos en Linux con ps
Figura 2: Visualizando procesos en Linux con ps

Como habrán notado, hicimos uso de head (tal como lo explicamos con anterioridad en otro post) para mostrar las primeras 10 líneas de la salida de cada comando a fin de poder colocar la salida de ambos en una misma imagen.

En lo personal, me gusta personalizar y ordernar la salida de ps, cosa que es posible mediante las opciones -eo y --sort, respectivamente. La primera debe ser seguida por la lista de campos a mostrar (en mi caso, PID, PPID, comando, uso de memoria, y uso de CPU), mientras que a continuación de la segunda debemos colocar un signo igual y el criterio de ordenamiento (-%mem indica ordenar por uso de memoria en forma descendente). Para más detalle, ver la Fig. 3:

[pastacode lang=»bash» manual=»ps%20-eo%20pid%2Cppid%2Ccmd%2C%25cpu%2C%25mem%20–sort%3D-%25mem%20%7C%20head%20-n%205″ message=»» highlight=»» provider=»manual»/]

Visualizar procesos en Linux (formato de salida personalizado con ps)
Figura 3: Visualizar procesos en Linux (formato de salida personalizado con ps)

Para mayor información, la respuesta aceptada en esta pregunta de SuperUser explica con detalle el significado de la salida correspondiente a los comandos anteriores.

Espero que este post les haya resultado útil. ¡Hasta la próxima!

 

Deja una respuesta