jueves, 29 de enero de 2015

Tipos de señales del comando KILL

  1. Ejecuta kill -l. E investiga el uso de las señales 9,15,18,19 y 20 de kill.
    Kill es un comando unix/linux que permite enviar señales a uno o varios procesos del sistemas a traves de la shell. El listado completo de las señales disponibles puede visualizarse ejecutando Kill -l. 
       
Pasaremos a explicar el uso de varias señales:
Kill -9: Nos permite forzar a uno o varios procesos que terminen de forma inmediata, sin solicitudes sin preguntas. Para ello se usa SIGKILL (9), esta señal se debe usar con cautela, porque fuerza a terminar inmediatamente, sin dejar terminar las peticiones pendientes de ese proceso.
Ejemplo: Realizamos una auditoria el cual aun tiene tareas pendientes, seleccionamos la señal SIGKILL (9) junto con el proceso gracias a <htop> y una vez ejecutemos la orden el proceso de auditoria sera terminado, aunque tuviera pendiente cualquier tipo de subproceso o tarea, dejando en la terminal donde se estaba ejecutando el proceso un mensaje como muestra la imagen. Terminado (killed).
  
 
Kill -15: Esta señal, es la señal por defecto si no se especifica ningun numero de señal, es decir tanto si escribimos Kill o Kill -15, el resultado sera el mismo, los procesos a los cuales se le envia esta señal, pueden limpiar su estado, es decir pueden guardar datos de la configuracion a un archivo antes de terminarse, su nombre segun la informacion del comando es SIGTERM (15). Es mas correcto usarlo pues no tenemos el problema de terminar procesos y perder informacion.


Kill -19: Esta señal, suspende un proceso, por lo que todavia figuraria en la lista de procesos y podriamos reanudarlo posteriormente, por ejemplo en la siguiente captura, se ha parado el proceso <htop> pero se puede ver que aun esta en la propia lista de procesos.
Kill -18: Esta señal nos permite reactivar el proceso que se ha suspendido anteriormente, ya que aun esta en la lista de procesos, se podria decir que revivimos al proceso.
Kill -20: Esta señal al igual que Kill -19 nos permite suspender un proceso el cual puede revivir con Kill -18 como ya se ha visto, pero tiene dos diferencias importantes, la primera que se puede mandar escribiendo el comando Kill -20 y el PDI del proceso o pulsando la tecla Control + Z teniendo seleccionado el proceso con el raton, ademas otra diferencia es que la señal SIGTSTP (Kill -20) puede ser ignorada mientras que Kill -19 no.
  1. Indica claramente la diferencia entre la 15 y la 9.
    Todos los procesos tienes un archivo de cabezera que contiene los pasos que deben seguir si recibe una señal en particular, si recibe la señal Kill -15, el proceso puede detenerse inmediatamente, o detenerse tras un breve retraso despues de limpieza de recursos. En cambio la señal Kill -9 la señal es enviada directamente a proceso padre <Init>, en ese momento Init detiene el proceso, dicho proceso nunca tiene la oportunidad de tomar la señal y actuar en consecuencia.
    En algunas ocasiones ni siquiera esta orden puede matar con exito los procesos que se le llama procesos zombi, y segun todas las fuentes solo reiniciando el equipo son borrados estos procesos del sistema.

  1. ¿Qué señal se lanza por defecto si no se especifica una?
    Cuando no se espeficia ninguna opcion es decir ejecutamos la orden:
    Kill [el numero del proceso que deseamos cerrar], se ejecuta igual que si tuvieramos la opcion numero 15 <SIGTERM>, es decir termina el proceso que le hemos indicado, lo mata, aunque seria mas correcto decir lo cierra.
    Ejemplo: Tenemos en un terminal ejecutandose <htop> el cual nos muestra el PDI del mismo proceso, en este caso el numero 2579, a su vez en otra terminal escribimos la orden <kill 2579>


Al darle a ejecutar, nos cerrara el proceso de <htop> dejando la terminal lista para ejecutar otro comando. Este comportamiento es identico al que realizaria la orden <kill -15 2579>.
 

  1. Pon un ejemplo claro de uso para las señales 9,15,18,19,20
Los ejemplos son variados, ademas de las capturas para la pregunta numero 1, se puede añadir por ejemplo, si estamos usando el programa wireshark para capturar informacion de nuestra red, podemos usar Kill -19 para suspender este proceso y mantenerlo dormido para que no capture informacion que no deseamos o no nos interesa, tambien podriamos usar Kill -20 pero como ya hemos indicado no es 100% seguro que suspendiera el proceso pero mas comodo al no tener que escribir el comando sino pulsar Control + Z.
Podemos usar en el mismo ejemplo de antes el Comando Kill -18 y reanudar el proceso wireshark y seguir capturando paquetes de nuestra red.

Usariamos Kill -15 cuando algun proceso no responde a la formas normales de cerrar, un navegador que tenemos varias ventanas abiertas y esta relentizando nuestro equipo. Si usando Kill -15 no respondiera el navegador siguiera relentizando el equipo, usaria Kill -9 que mataria el proceso sin ningun tipo de espera.