Señales en Linux: SIGTERM, SIGKILL, SIGHUP y Cómo Usar kill y trap
La "conversación" entre el sistema operativo y los programas en ejecución es a través de Señales en Linux, que son interrupciones de software, utilizadas para poner un programa conectado a una terminal, en espera, en segundo o en primer plano, e incluso detener su ejecución.
Cada proceso en Linux queda a la escucha de señales. Estas señales son utilizadas por el Kernel, por otros procesos o por el usuario para avisar a un determinado proceso sobre algún evento en particular. El guru de UNIX W. Richard Stevens describe las señales como interrupciones de software.
Cuando una señal es enviada a un proceso, este toma una acción específica dependiendo del valor que la señal porta.
Cada señal tiene un nombre único y un valor numérico.
Veamos algunos valores y sus acciones:
TABLA – Señales más importantes
| Señal | Valor Numérico | Acción |
| SIGHUP | 1 | Hang-Up o apagado. Esta señal se utiliza automáticamente cuando te desconectas de una sesión o cierras una terminal. También es utilizada por procesos servidores para invocar la relectura del archivo de configuración. |
| SIGINT | 2 | Es la señal de interrumpir el funcionamiento. Se acciona por ejemplo cuando se presionan las teclas Ctrl C. |
| SIGKILL | 9 | Terminar el proceso incondicionalmente de forma rápida y drástica. Este tipo de señal puede dejar archivos abiertos y bases de datos corruptas. Debe ser utilizado en caso de que el proceso deje de responder o en una emergencia. |
| SIGTERM | 15 | Termina el proceso de forma elegante, posibilitando que cierre archivos y ejecute sus rutinas de fin de ejecución. |
| SIGCONT | 18 | Es una señal para un proceso que fue detenido con la señal SIGSTOP para que continúe ejecutándose. |
| SIGSTOP | 19 | Es una señal que puede ser enviada a un proceso para detener su funcionamiento momentáneamente. Este continúa existiendo, pero ya no recibe más CPU para ejecutar, hasta que reciba la señal SIGCONT. |
| SIGTSTP | 20 | Termina la ejecución para continuar después. Esta señal se envía automáticamente cuando utilizamos las teclas ctrl-z. Se utiliza para poner el proceso en segundo plano. |
Linux posee más de 30 señales definidas. La mayoría es utilizada por el Kernel y algunas por los usuarios en situaciones específicas.
La comprensión de señales es importante para saber cómo el sistema interactúa con los procesos en ejecución. Los comandos kill y killall pueden ser usados para enviar señales específicas a un proceso en ejecución.
La mayoría de los administradores al detener un proceso, usa SIGKILL. Sin embargo, esta señal es muy "fuerte", pues hace una parada abrupta en el proceso en ejecución, y puede dejar archivos abiertos, índices mal hechos, y datos corruptos. Es mejor usar la señal SIGTERM, que permite que el programa termine elegantemente, cerrando los archivos, índices y bases de datos.
Linux permite que los usuarios envíen señales a los programas en ejecución a través del comando kill.
Aprende mucho más sobre Linux en nuestro curso en línea. Puedes realizar la inscripción aquí. Si ya tienes una cuenta, o quieres crear una, simplemente ingresa o crea tu usuario aquí.
¿Te gustó? Comparte
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.