Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Procesos y señales Administración de Linux

Cuando usamos Linux, todo lo que hacemos está relacionado con procesos. Cada vez que abres un programa, el sistema operativo crea uno o más procesos para hacerlo funcionar.

El proceso es simplemente una instancia de un programa que está en ejecución.

Por ejemplo:

  • Abres VS Code → se crea un proceso.
  • Ejecutas un script en Python → otro proceso.
  • Escuchas música → otro proceso.

Gracias a que Linux permite ejecutar múltiples procesos a la vez, podemos hacer todo eso al mismo tiempo sin problema.

¿Por qué un programa puede tener varios procesos?

Veamos el ejemplo de un navegador como Chrome o Firefox:

Cada pestaña del navegador es un proceso separado.

Esto tiene muchas ventajas:

  • Si una pestaña se bloquea, las otras siguen funcionando bien.
  • El sistema operativo puede administrar mejor el uso de recursos.

Antes, si una pestaña fallaba, ¡todo el navegador se congelaba! 😬

Procesos y subprocesos

Un proceso también puede dividirse en subprocesos (threads). Esto se hace para que una tarea se ejecute más rápido o en paralelo, pero complica un poco el código.

¿Cómo sabe Linux qué procesos están activos?

Cada proceso tiene una estructura de datos interna, donde se guarda toda su información:

  • PID (Process ID): identificador único del proceso
  • Usuario que lo inició
  • Ruta del archivo ejecutado
  • Directorio de trabajo
  • Entre otros

Puedes ver esta información con el comando:

ps aux

Ejemplo de salida:

root     1234  0.0  nginx: master process
juan     4567  0.2  python3 mi_script.py

Fíjate en la segunda columna: ahí está el PID de cada proceso.

¿Qué son las señales en Linux?

Las señales son mensajes especiales que puedes enviar a un proceso para interactuar con él.

SIGTERM (solicitud de terminar)

Este le dice al proceso: "Por favor, termina tu trabajo y cierra". Se envía así:

kill -15 606827

Aunque el comando se llama kill, en realidad solo envía una señal, no "mata" directamente. El número 15 representa la señal SIGTERM, que significa: “termina si puedes”.


Un proceso en Python puede capturar señales y responder a ellas. Observa este ejemplo sencillo:

import signal
import sys

def manejar_salida(sig, frame):
    print("Recibí SIGTERM. Cerrando el programa...")
    sys.exit(0)

# Registramos la función para cuando llegue SIGTERM
signal.signal(signal.SIGTERM, manejar_salida)

print("Esperando señales...")

# Bucle infinito (como si fuera un servidor)
while True:
    pass

Sigue estos pasos para probarlo:

  1. Guarda este script como proceso.py
  2. Ejecútalo: python3 proceso.py
  3. En otra terminal, busca su PID con ps aux | grep proceso.py
  4. Envíale la señal: kill -15 <PID>

Señal SIGKILL (terminación forzada)

Si el proceso no responde, puedes enviar SIGKILL:

kill -9 <PID>

Esto termina el proceso de inmediato, sin darle oportunidad de cerrar archivos o guardar información. Úsalo solo si no queda otra opción.

Resumen

  • Un proceso es una instancia de un programa en ejecución.
  • Linux puede manejar muchos procesos al mismo tiempo, lo que permite realizar varias tareas en paralelo.
  • Cada proceso tiene un PID (identificador único) y otros datos como el usuario que lo ejecutó o el archivo que está corriendo.
  • Puedes ver los procesos activos con el comando ps aux.
  • Para interactuar con un proceso, puedes enviarle señales.
  • SIGTERM (señal 15) pide al proceso que se cierre de forma ordenada.
  • SIGKILL (señal 9) lo fuerza a cerrarse inmediatamente, sin posibilidad de reacción.
  • En Python, puedes capturar señales como SIGTERM y ejecutar una función antes de salir.

Trabajo independiente

Vamos a practicar cómo encontrar un proceso que ya ha sido iniciado.

1️⃣ Inicia el servidor web en segundo plano:

python3 -m http.server 8000 --bind 127.0.0.1 --directory /var/www/public_html > /dev/null &
    

2️⃣ Muestra la lista de procesos, encuentra el proceso del servidor web y finalízalo.

3️⃣ Verifica que la página ya no se pueda abrir en el navegador.

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY