Qué son los procesos y cómo podemos gestionarlos en Ubuntu

portada-procesos

Hoy en día Ubuntu (y la mayoría de distros GNU/Linux) cuentan con una Interfaz de Usuario compleja, que permite al usuario usar el Sistema casi sin saber nada sobre él, y eso está bien. Se parte de la premisa de que el usuario no tiene por qué tener conocimientos avanzados, y es por ello por lo que el uso de Ubuntu y GNU/Linux en general es de cada vez más intuitivo.

Ahora bien, nunca está de más saber cómo funciona lo que estamos usando. Además, sabemos que si usas GNU/Linux es en parte por tu inconformidad, por tu curiosidad y por tus ganas de aprender. Así que en Ubunlog queremos escribir un artículo algo más técnico y enseñaros qué son los procesos y cómo funcionan en Ubuntu. Os enseñaremos a listar los procesos en ejecución, a buscar un proceso determinado y a matarlos. Comenzamos.

Cómo todos y todas sabremos, Ubuntu (GNU/Linux) es un Sistema Operativo multitarea. Esto significa que es capaz de ejecutar varios procesos (tareas) simultáneamente, sin que haya problemas entre ellos.

Pero… ¿Qué es un proceso?

Un proceso no es más que una instancia de un programa. O dicho de otra forma, un programa no es más que una serie de procesos que se están ejecutando. Así que de un modo coloquial, un proceso se podría entender cómo un programa que se está ejecutando.

Los procesos, cómo algunos ya sabréis, pueden ejecutarse de dos modos; en foreground (en primer plano) o en background (en segundo plano).

Además, para los más curiosos, un proceso también tiene un estado, puesto que no sólo puede estar ejecutándose. Si por ejemplo un proceso A lanza otro proceso B, el A pasa a conocerse como el proceso padre y el B como el proceso hijo (child). Lo más frecuente es que cuando esto ocurre, A quede en estado suspendido.

Podemos verlo con un ejemplo:

Si abrimos la Terminal de nuestro Ubuntu, ya estamos lanzando un nuevo proceso, puesto que la terminal es otro programa más. Y  si desde la Terminal lanzamos otro programa, veremos que queda suspendida. Es decir, si una vez abierta la Terminal, ejecutamos:

gedit f_prueba

para abrir un nuevo fichero llamado f_prueba (con el editor de texto Gedit), veremos que la terminal queda suspendida y que “ya no la podemos seguir usando”. Si queríamos seguir usando esa misma Terminal después de lanzar el proceso, basta con que lo lancemos en background (segundo plano), es decir, basta que ejecutemos:

gedit f_prueba &

El símbolo “&” indica que queremos que dicho proceso se ejecute en background. De este modo, una vez lanzado el proceso, podemos seguir usando la Terminal, puesto que no habrá quedado suspendida y ambos procesos se seguirán ejecutando con normalidad.

¿Cómo puedo saber que procesos se están ejecutando en Ubuntu?

Para ver la lista de procesos que se están ejecutando, basta con que abramos una Terminal y ejecutemos:

ps -aux

Y veremos una salida como la siguiente:

Captura de pantalla de 2016-05-22 16:19:21

La única información que nos interesa de la lista, es el PID. El PID (Identificador de Proceso) es un número entero que cómo su propio nombre indica, se encarga de identificar a un único proceso.

Además, Ubuntu (y todas las distros GNU/Linux) cuentan con un fichero que determina el valor máximo del PID. Esto, obviamente nos determina la cantidad máxima de procesos que se van a ejecutar. El fichero se llama pid_max y está dentro del directorio /proc/sys/kernel/. Si queréis ver su contenido rápidamente basta con que ejecutéis:

cat /proc/sys/kernel/pid_max

Y veréis como, por defecto, la cantidad máxima de procesos que se pueden ejecutar son 32768. Es importante que andéis con cuidado moviéndoos por dichos directorios, puesto que una mal cambio podría ser fatal.

Por otro lado, si queremos buscar los procesos asociados a un determinado programa podemos usar una tubería y el comando grep para filtrar el resultado. Es decir, si por ejemplo queremos ver todos los procesos asociados a Gimp, podemos ejecutar:

ps -aux | grep gimp

Captura de pantalla de 2016-05-22 16:25:53

Cómo veis, en mi caso hay 3 procesos asociados a Gimp.

Y… ¿Cómo puedo matar un proceso?

Matar un proceso significa acabar con él, enviar la señal correspondiente para que el proceso finalice. Para hacerlo es tan fácil como usar el comando kill. Aquí es dónde necesitamos conocer el PID del proceso que queremos matar. En el ejemplo anterior, pongamos que quiero acabar con el proceso de Gimp que tiene 5649 como PID. Pues basta con ejecutar:

kill 5649

Ahora bien, ¿cómo puedo matar de una sola vez todos los procesos asociados a un programa? Muy fácil también. Si en mi caso quiero matar todos los procesos de Gimp, puedo usar el comando pkill. De la siguiente forma:

pkill gimp

Esto mataría todos los procesos de Gimp, es decir, los procesos con PIDs 5649, 5719 y 5782. ¿Fácil verdad? Si se os congela un programa y no sabíais cómo acabar con él, ahora ya tenéis una posible solución 😉

Esperamos que esta pequeña guía os haya ayudado a comprender un poco mejor el funcionamiento de Ubuntu y Linux en general. Saber cómo trabajar y gestionar procesos es básico en Linux y a la vez muy importante. Aún así sabemos que esta guía ha sido bastante simple y concisa, así que si eres curioso y tienes ganas de profundizar un poco en el tema, puedes echar un vistazo al ciclo de vida de los procesos o al Scheduler de Linux (planificador de procesos).

Hasta la próxima 😉


Un comentario

Escribe un comentario