Actividades de Gestión de Procesos en Linux

Comprender cómo visualizar, monitorear y controlar procesos es vital para la administración eficaz de sistemas Linux. Estas habilidades permiten optimizar el rendimiento, resolver problemas y mantener el sistema funcionando de manera eficiente.

Actividad 1: Exploración de Procesos con ps

Objetivo:

Familiarizarse con el listado y filtrado de procesos en ejecución, utilizando diferentes opciones de ps.

Descripción:

El comando ps es una herramienta poderosa para monitorear los procesos activos en un sistema Linux. Puede utilizar varias opciones para cambiar el alcance y el formato de la información mostrada. Las opciones aux y -ef son comúnmente usadas para este propósito, proporcionando una visión detallada de todos los procesos en ejecución.

  • ps aux muestra todos los procesos en ejecución en el sistema con una sintaxis que es fácilmente legible y comprendida por usuarios acostumbrados a sistemas BSD. Muestra el usuario que inició el proceso, el % de CPU y memoria utilizada, entre otros detalles.

  • ps -ef es una opción estándar de System V UNIX y ofrece una vista similar, pero con una sintaxis ligeramente diferente. Incluye el PID del proceso padre (PPID), lo que puede ser útil para entender la jerarquía de los procesos.

$USER es una variable de entorno que representa el nombre del usuario actualmente logueado en la sesión de la terminal. Al usar $USER con grep en combinación con ps, puede filtrar los procesos para mostrar solo aquellos que están siendo ejecutados por el usuario actual.

Pasos:

  1. Ejecute ps aux para visualizar todos los procesos en ejecución en el sistema. Note cómo se presenta la información y qué datos son mostrados.

    ps aux
    
  2. Ahora, ejecute ps -ef y observe las diferencias en la presentación de la información comparada con ps aux.

    ps -ef
    
  3. Para filtrar la salida de ps y mostrar solo los procesos pertenecientes a su usuario, utilice grep de la siguiente manera:

    ps aux | grep $USER
    ps -ef | grep $USER
    

Ejemplo Específico:

Si está interesado en filtrar todos los procesos relacionados con el navegador firefox, podría usar:

ps aux | grep firefox
ps -ef | grep firefox

Preguntas de Reflexión:

  • ¿Qué ventajas ofrece cada opción (aux vs -ef) al investigar el comportamiento de los procesos en su sistema?

  • Al revisar los procesos filtrados por $USER, ¿qué procesos específicos son típicamente iniciados por su usuario y cuáles son sus roles?

Actividad 2: Monitoreo Interactivo con top

Objetivo:

Aprender a utilizar top para el monitoreo interactivo de procesos.

Pasos:

  1. Inicie el monitoreo de procesos ejecutando top. Observe la actualización en tiempo real de los procesos y su consumo de recursos.

  2. Dentro de top, presione Shift + P para ordenar los procesos por uso de CPU, y Shift + M para ordenarlos por uso de memoria.

Ejemplo Específico:

  • Mientras top está ejecutando, intente abrir varias aplicaciones o procesos. Observe cómo cambia la lista de procesos y cómo se altera el uso de recursos.

Preguntas de Reflexión:

  • ¿Qué información adicional proporciona top que no muestra ps?

  • ¿Cómo podría utilizar top para identificar procesos que necesitan ser terminados para liberar recursos?

Actividad 3: Terminación de Procesos con kill y pkill

Objetivo:

Practicar la terminación segura de procesos utilizando kill y pkill.

Pasos:

  1. Identifique un proceso no crítico que pueda terminar. Use ps o top para encontrar el PID (Identificador de Proceso) de este.

  2. Utilice kill seguido por el PID para terminar el proceso. Por ejemplo, si el PID es 1234:

    kill 1234
    
  3. Para terminar procesos por nombre, use pkill. Si desea terminar todos los procesos llamados «firefox», ejecute:

    pkill firefox
    

Ejemplo Específico:

  • Imagine que un proceso de copia de seguridad, backup.sh, no está respondiendo. Para terminarlo, primero encuentre el PID con ps aux | grep backup.sh y luego use kill.

Preguntas de Reflexión:

  • ¿Qué diferencias hay entre usar kill y pkill? ¿Cuándo sería más apropiado usar uno sobre el otro?

Señales Comúnmente Utilizadas en la Gestión de Procesos

En Linux, los comandos kill y pkill permiten enviar señales a los procesos para controlar su ejecución. Las señales son mensajes que indican a un proceso que debe realizar una acción específica, como terminar su ejecución o pausarse. A continuación, se describen algunas de las señales más utilizadas:

SIGTERM (Señal 15)

  • Descripción: La señal de término (SIGTERM) solicita que un proceso termine su ejecución de manera segura, permitiendo que libere recursos y guarde su estado si es necesario. Es la señal predeterminada enviada por kill cuando no se especifica una señal.

  • Uso: Es la manera más común y segura de solicitar la terminación de un proceso.

kill 1234  # Enviar SIGTERM al proceso con PID 1234
kill -SIGTERM 1234  # Forma explícita

SIGKILL (Señal 9)

  • Descripción: La señal de matar (SIGKILL) fuerza la terminación de un proceso sin permitirle limpiar o liberar recursos. Es útil para terminar procesos que no responden a SIGTERM.

  • Uso: Debe usarse como último recurso cuando un proceso no puede terminarse de manera segura.

kill -9 1234  # Enviar SIGKILL al proceso con PID 1234
kill -SIGKILL 1234

SIGSTOP (Señal 19)

  • Descripción: La señal de detención (SIGSTOP) pausa la ejecución de un proceso sin terminarlo. El proceso puede reanudarse posteriormente.

  • Uso: Útil para detener temporalmente un proceso sin terminarlo.

kill -SIGSTOP 1234  # Detener el proceso con PID 1234

SIGCONT (Señal 18)

  • Descripción: La señal de continuar (SIGCONT) reanuda la ejecución de un proceso previamente detenido por SIGSTOP.

  • Uso: Reanudar un proceso detenido.

kill -SIGCONT 1234  # Continuar el proceso con PID 1234

Preguntas de Reflexión:

  • ¿Por qué es importante conocer la diferencia entre SIGTERM y SIGKILL cuando se terminan procesos?

  • ¿Cómo afectaría al sistema el uso excesivo de SIGKILL en lugar de SIGTERM?

  • Describa un escenario en el que usaría SIGSTOP y SIGCONT para gestionar los procesos.