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. .. code-block:: bash ps aux 2. Ahora, ejecute ``ps -ef`` y observe las diferencias en la presentación de la información comparada con ``ps aux``. .. code-block:: bash ps -ef 3. Para filtrar la salida de ``ps`` y mostrar solo los procesos pertenecientes a su usuario, utilice ``grep`` de la siguiente manera: .. code-block:: bash 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: .. code-block:: bash 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: .. code-block:: bash kill 1234 3. Para terminar procesos por nombre, use ``pkill``. Si desea terminar todos los procesos llamados "firefox", ejecute: .. code-block:: bash 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. .. code-block:: bash 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. .. code-block:: bash 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. .. code-block:: bash 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. .. code-block:: bash 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.