Hay una serie de señales cuya disposición predeterminada es terminar el proceso. La última señal de terminación es SIGKILL ya que no se puede manejar y el proceso no tiene más remedio que morir. Sin embargo, esto también significa que si lo envía, el proceso se ve privado de la oportunidad de limpiar. Por lo tanto, los buenos modales requieren enviar una señal como SIGTERM que se pueda manejar primero y solo si el proceso no se cierra después de un tiempo envíelo SIGKILL.
Tenga en cuenta que SIGINT y SIGQUIT no son buenos candidatos para la terminación arbitraria del proceso. Debido al hecho de que pueden generarse desde el teclado del terminal, muchas aplicaciones los usan para fines especiales. Por ejemplo, el intérprete de Python usa SIGINT para generar una KeyboardInterrupt
excepción (también en sesiones interactivas de Python donde simplemente regresa a la solicitud) y JVM usa SIGQUIT para volcar los seguimientos de la pila. SIGINT y SIGQUIT siguen siendo efectivos para la mayoría de las utilidades de línea de comandos estándar como find
o cat
.
Durante el apagado del sistema, la mayoría de los sistemas UNIX y Linux envían SIGTERM a todo el proceso, seguido de 5 segundos de espera, seguido de SIGKILL. Esta es la forma recomendada de cerrar de forma segura un proceso arbitrario.
Tenga en cuenta también que incluso SIGKILL no puede finalizar un proceso atascado en una espera ininterrumpida hasta que el proceso se active.
SIGKILL
.