Gestión de procesos en Linux – Todo lo que necesitas saber

Introducción

Linux en general es un sistema bastante estable. Ocasionalmente, las cosas salen mal y, a veces, también deseamos modificar el funcionamiento del sistema para que se adapte mejor a nuestras necesidades. En este artículo, veremos brevemente cómo podemos administrar programas o procesos en un sistema Linux.

¿Qué son?

Un programa es una serie de instrucciones que le indican a la computadora qué hacer. Cuando ejecutamos un programa, esas instrucciones se copian en la memoria y se asigna espacio para las variables y otras cosas necesarias para administrar su ejecución.

Esta instancia en ejecución de un programa se llama proceso y son los procesos que administramos.

¿Qué se está ejecutando actualmente?

Linux, como la mayoría de los sistemas operativos modernos, es un sistema operativo multitarea. Esto significa que muchos procesos pueden ejecutarse al mismo tiempo.

Además de los procesos que estamos ejecutando, puede haber otros usuarios en el sistema que también ejecutan cosas y el sistema operativo en sí también generalmente ejecutará varios procesos que utiliza para administrar todo en general.

Si nos gustaría obtener una instantánea de lo que está sucediendo actualmente en el sistema, podemos usar un comando llamado top.

top

A continuación, se muestra una versión simplificada de lo que deberías ver cuando ejecutas este comando.

Vamos a desglosarlo:

  • Línea 2 – Tasks es solo otro nombre para los procesos. Es típico tener bastantes procesos ejecutándose en tu sistema en un momento dado. La mayoría de ellos serán procesos del sistema. Muchos de ellos normalmente estarán reposando. Esto está bien. Simplemente significa que están esperando hasta que ocurra un evento en particular, sobre el cual actuarán.
Línea 3

Este es un desglose de la memoria de trabajo (RAM). No te preocupes si usa una gran cantidad de tu memoria. Linux mantiene los programas usados ​​recientemente en la memoria para acelerar el rendimiento si se ejecutan nuevamente. Si otro proceso necesita esa memoria, se pueden borrar fácilmente para acomodar esto.

  • Línea 4 – Este es un desglose de la memoria virtual en tu sistema. Si usa una gran cantidad de esto, es posible que desees considerar aumentar su tamaño. Para la mayoría de las personas con los sistemas más modernos que tienen gigabytes de RAM, no deberían experimentar ningún problema aquí.
  • Líneas 6 – 10 – Finalmente, se incluye una lista de los procesos que requieren más recursos en el sistema (en orden de uso de recursos). Esta lista se actualizará en tiempo real, por lo que es interesante observarla para tener una idea de lo que está sucediendo en tu sistema.

Las dos columnas importantes a considerar son el uso de memoria y CPU. Si cualquiera de estos es alto para un proceso en particular durante un período de tiempo, puede valer la pena investigar por qué esto es así. La columna USER muestra quién es el propietario del proceso y la columna PID identifica la ID de proceso de un proceso, que es un identificador único para ese proceso.

Top te dará una vista en tiempo real del sistema y solo mostrará la cantidad de procesos que caben en la pantalla. Otra opción para ver los procesos se llama ps, que significa procesos.

En su uso normal, te mostrará solo los procesos que se ejecutan en tu terminal actual (que generalmente no es mucho). Si agregamos el argumento aux, mostrará una vista completa del sistema que es un poco más útil.

ps [aux]

Muestra bastante salida, por lo que las personas generalmente usan una tubería para para grep para filtrar solo los datos que buscan. Más adelante veremos un ejemplo de esto.

Eliminar un proceso fallido

No sucede a menudo, pero cuando un programa falla, puede ser bastante molesto. Digamos que tenemos nuestro navegador en funcionamiento y, de repente, se bloquea.

Intentas cerrar la ventana, pero no sucede nada, se ha vuelto completamente insensible. No te preocupes, podemos matar/eliminar fácilmente a Firefox y luego volver a abrirlo. Para comenzar, necesitamos el identificador del proceso.

Es el número al lado del propietario del proceso que es el PID (ID del proceso). Usaremos esto para identificar qué proceso eliminar. Para hacerlo, utilizamos un comando que se llama apropiadamente kill.

kill [signal] <PID>

A veces tienes suerte y simplemente ejecutando kill normalmente hará que el proceso se detenga y salgas de el. Cuando haces esto, kill envía la señal predeterminada (1) al proceso que efectivamente le pide al proceso que se cierre.

Siempre intentamos esta opción primero, ya que cerrar es la mejor opción. Sin embargo, a veces esto no funciona. En el ejemplo anterior, volvimos a ejecutar ps y vimos que el proceso todavía se estaba ejecutando.

No te preocupes, podemos ejecutar kill nuevamente, pero esta vez proporcionamos una señal de 9, lo que significa efectivamente, entrar con un mazo y asegurarnos de que el proceso haya desaparecido.

Truco

Los usuarios normales solo pueden eliminar procesos de los que son propietarios. El usuario root en el sistema puede eliminar cualquier proceso.

Mi escritorio se ha bloqueado

En ocasiones raras, cuando un proceso se bloquea y deja de funcionar, puede bloquear todo el escritorio. Si esto sucede, todavía hay esperanza.

Linux en realidad ejecuta varias consolas virtuales. La mayoría de las veces solo vemos la consola 7, que es la GUI, pero podemos acceder fácilmente a los demás.

Si la GUI se ha bloqueado y tenemos suerte, podemos acceder a otra consola y eliminar el proceso ofensivo desde allí. Para cambiar entre consolas, usa la secuencia de teclado CTRL + ALT + F <Console>. Por lo tanto, CTRL + ALT F2 te llevará a una consola (si todo va bien) donde puedes ejecutar los comandos como se indican arriba para identificar los ID de proceso y eliminarlos.

Luego, CTRL + ALT F7 te llevará de regreso a la GUI para ver si se ha solucionado. El enfoque general es mantener los procesos de eliminación hasta que se solucione el bloqueo.

Normalmente, puedes buscar signos reveladores, como un alto uso de CPU o memoria, y comenzar con esos procesos primero. A veces, este enfoque funciona, a veces no y necesitas reiniciar la computadora. Solo depende de la suerte que tengas.

Trabajos en primer plano y en segundo plano

Probablemente no necesites hacer demasiado con los trabajos (jobs) en primer plano y en segundo plano, pero vale la pena conocerlos solo para esas raras ocasiones.

Cuando ejecutamos un programa normalmente (como hemos estado haciendo hasta ahora) se ejecutan en primer plano. La mayoría de ellos también se completan en una fracción de segundo. Tal vez deseamos comenzar un proceso que tome un poco de tiempo y lo haga felizmente sin intervención de nosotros (por ejemplo, procesar un archivo de texto muy grande o compilar un programa).

Lo que podemos hacer es ejecutar el programa en segundo plano y luego podemos seguir trabajando. Lo demostraremos con un comando llamado sleep. Todo lo que hace sleep es esperar un número determinado de segundos y luego salir. También podemos usar un comando llamado jobs que enumera los trabajos en segundo plano actualmente en ejecución para nosotros.

jobs

Si ejecutas el ejemplo anterior tú mismo, notarás que la terminal espera 5 segundos antes de presentarte un mensaje nuevamente. Ahora, si ejecutamos el mismo comando, pero en su lugar colocamos un signo & al final del comando, le estamos diciendo a la terminal que ejecute este proceso en segundo plano.

Esta vez notarás que asigna al proceso un número de trabajo, nos dice cuál es ese número y nos da la respuesta de inmediato. Podemos seguir trabajando mientras el proceso se ejecuta en segundo plano.

Si esperas 5 segundos más o menos y luego presionas Enter, verás un mensaje que te indica que el trabajo se ha completado.

También podemos mover trabajos entre el primer plano y segundo plano. Si presionas CTRL + z, el proceso de primer plano actualmente en ejecución se pausará y pasará a segundo plano. Entonces podemos usar un programa llamado fg que significa primer plano para traer procesos en segundo plano al primer plano.

fg <job number>

Truco

CTRL + z se usa en Windows, pero con el propósito de ejecutar el comando deshacer. No es raro que las personas que vienen del mundo de Windows presionen accidentalmente el combo de teclas (especialmente en el editor VI, por ejemplo) y se pregunten por qué su programa desapareció y regresó el mensaje.

Si haces esto, no te preocupes, puedes usar jobs para identificar a qué trabajo se le ha asignado y luego fg para recuperarlo y continuar trabajando.

Resumen

Lo que aprendimos

top

Ver datos en tiempo real sobre los procesos que se ejecutan en el sistema.

PD

Obtener una lista de los procesos que se ejecutan en el sistema.

kill

Terminar la ejecución de un proceso.

jobs

Muestra una lista de trabajos actuales que se ejecutan en segundo plano.

fg

Mueve un proceso en segundo plano al primer plano.

Ctrl + Z

Pausa el proceso actual en primer plano y lo mueve a segundo plano.

Conceptos importantes

Control

Tenemos bastante control sobre la ejecución de nuestros programas.

Practicando lo aprendido

Tiempo para divertirse:

  • En primer lugar, inicia algunos programas en tu escritorio. Luego usa ps para identificar sus PID y eliminarlos
  • Ahora observa si puedes hacer lo mismo, pero primero cambia a otra consola virtual.
  • Finalmente, juega con el comando sleep y los procesos de movimiento entre el primer plano y el segundo plano.