GNU/Linux >> Tutoriales Linux >  >> Linux

SIGTERM vs SIGKILL:¿Cuál es la diferencia?

Terminar un proceso es una parte crucial de la gestión de procesos en Linux.

Dado que la gestión de procesos es un tema en sí mismo, no entraré en los detalles de la gestión de procesos de usuario y el manejo de señales en esta publicación.

Me enfocaré en usar las señales SIGTERM y SIGKILL para terminar un proceso. También discutiré por qué deberías evitar usar SIGKILL.

¿Qué es SIGTERM?

En sistemas similares a UNIX, la señal SIGTERM se usa para terminar un programa. Puedes adivinarlo por su nombre, que se compone de SIGnal y TERMinate.

El SIGTERM también se puede denominar cierre suave porque el proceso que recibe la señal SIGTERM puede optar por ignorarlo.

En otras palabras, es la forma educada de matar un proceso.

¿Cómo enviar SIGTERM a un proceso en Linux?

El comando kill en Linux se usa para enviar todas esas señales a los procesos.

De forma predeterminada, el comando kill envía la señal SIGTERM. Puede mencionarlo explícitamente con -15, pero eso es redundante.

Necesitará saber el pid del proceso para usar este comando de la siguiente manera:

kill <process_id>

Puede usar el comando ps en Linux para obtener la ID del proceso.

¿Qué es SIGKILL?

El SIGKILL se utiliza para la terminación inmediata de un proceso. Esta señal no se puede ignorar ni bloquear. El proceso terminará junto con sus subprocesos (si los hay).

Es la forma brutal de matar un proceso y solo debe usarse como último recurso. Suponga que tiene un proceso que no responde y desea cerrar. El SIGKILL se puede utilizar en tal caso.

¿Cómo enviar SIGKILL a un proceso en Linux?

Puede usar la opción -9 para enviar la señal SIGKILL con el comando kill y terminar el proceso inmediatamente:

kill -9 <process_id>

SIGTERM vs SIGKILL:¿Por qué debería preferir usar SIGTERM sobre SIGKILL?

Aunque ambas señales se usan para matar un proceso, existen algunas diferencias entre las dos:

  • SIGTERM elimina el proceso con gracia, mientras que SIGKILL elimina el proceso inmediatamente.
  • La señal SIGTERM se puede manejar, ignorar y bloquear, pero SIGKILL no se puede manejar ni bloquear.
  • SIGTERM no elimina los procesos secundarios. SIGKILL también elimina los procesos secundarios.

Algunos usuarios de Linux se acostumbran a usar 'kill -9' y eso es algo que debes evitar. A menos que tenga un proceso que no responde, no necesita usar SIGKILL.

Con SIGTERM, un proceso obtiene el tiempo para enviar la información a sus procesos padre e hijo. Sus procesos secundarios son manejados por init.

El uso de SIGKILL puede conducir a la creación de un proceso zombi porque el proceso eliminado no tiene la oportunidad de decirle a su proceso principal que ha recibido una señal de eliminación.

Este cómic de Turnoff explica con humor la diferencia entre SIGTERM y SIGKILL.

Espero que comprenda mejor cómo eliminar un proceso usando SIGTERM o SIGKILL ahora.

Si tiene alguna pregunta o sugerencia, no dude en dejar un comentario.


Linux
  1. Linux vs Unix:¿Cuál es la diferencia?

  2. Diferencia entre SIGKILL SIGTERM considerando el árbol de procesos

  3. ¿Cuál es la definición de una sesión en Linux?

  4. ¿Cuál es la diferencia entre Kernel no preventivo, preventivo y selectivo?

  5. ¿Cuál es la diferencia entre unlink y rm?

Useradd vs Adduser:¿Cuál es la diferencia?

iptables vs nftables:¿Cuál es la diferencia?

DevOps vs Ingeniero de software:¿Cuál es la diferencia?

¿Qué es un Hipervisor? ¿Cuál es la diferencia entre el tipo 1 y 2?

¿Cuál es la diferencia entre curl y Wget?

HTTP vs HTTPS:¿Cuál es la diferencia?