El comando kill: enviar señales a procesos

En La terminación de procesos en GNU/Linux y en Matar procesos para liberar recursos del sistema, aprendimos a utilizar el comando kill. En esta oportunidad hablaremos más en detalle sobre lo que sucede detrás de escena cuando usamos esta herramienta para interrumpir la ejecución de un proceso. Por lo general, solamente recurriremos a esta operación en pocas ocasiones. Algunos ejemplos son: si el proceso ha dejado de responder o se está comportando de manera errática.

El comando kill

Cuando empleamos kill para matar un proceso, se le envía al mismo una señal. En otras palabras, le estamos mandando una indicación para modificar su funcionamiento normal. Los distintos tipos de señales se enumeran a través de

kill -l

y en este link encontramos una descripción de las mismas. Las más utilizadas son las que vemos remarcadas en la Fig. 1: 1 (SIGHUP), 9 (SIGKILL), y 15 (SIGTERM):

Las distintas señales que pueden utilizarse con el comando kill
Figura 1 – Las distintas señales que pueden utilizarse con el comando kill

Descripción de las señales

Veamos a continuación el significado y las implicaciones de las tres señales más utilizadas.

  • Cuando se cierra la terminal asociada a uno o más procesos, se envía a los mismos la señal SIGHUP, lo que hace que se detengan.
  • SIGKILL le indica a un proceso que debe finalizar de inmediato, sin darle tiempo a liberar adecuadamente los recursos que esté utilizando. Esta señal no puede ser ignorada por el proceso al que es enviada. Por ejemplo, cualquiera de los siguientes comandos enviará un SIGKILL al proceso con PID 964:
kill -9 964
kill -s SIGKILL 964

Para enviar otras señales, el formato es el mismo. Lo único que se debe cambiar es la representación numérica o el nombre de la señal correspondiente.

  • Finalmente, SIGTERM le permite al proceso terminar su ejecución normalmente dándole la oportunidad de liberar los recursos utilizados. Aunque esto suene bien, cabe aclarar que esta señal puede ser ignorada por un proceso. Por eso puede ser necesario (como último recurso) utilizar SIGKILL en algunas ocasiones.

Espero que este post les haya resultado útil. ¡Nos leemos en breve!

¡Aprovechá la oportunidad de suscribirte al blog para recibir en tu correo el post nuestro de cada día, novedades, y promociones exclusivas!