Posted by q3it on jueves, abril 20, 2023 in Linux
Voy a hablar sobre el comando kill que no siempre va a ser para terminar la ejecución de un proceso, lo que hará es mandar una señal a ese proceso donde puede ser, terminante, muerte, parate o relee la configuración.
Su sintaxis es kill y el PID y opcionalmente le podemos mandar una señal distinta a la que es por defecto. Las señales que podemos utilizar con kill son las siguientes: Por defecto va a ser el número 15 que es denominado SIGTERM, que lo que le va a indicar al proceso es terminante. Este proceso puede cerrar algún fichero que tenga abierto, puede cerrar alguna conexión y finalmente se va a terminar. Para especificar esta señal, podemos especificarla de tres formas, con el número, por ejemplo, 15 con la palabra completa SIGTERM o simplemente con la palabra TERM.
Si lo que queremos es matarlo porque no está respondiendo, nos da igual que cierre el fichero o las conexiones. Entonces utilizaremos el número 9 que es SIGKILL, aquí sí que estaremos matando el proceso. También podemos utilizar todas las señales sin el SIG. Si lo que queremos es pararlo para más tarde seguir su ejecución, podemos utilizar el número 17, 19 o el 23, y esto va a ser SIGSTOP que es para pausarlo. luego vamos a tener 2 que es como si nosotros estuviéramos saliendo con el teclado y es SIGINT sería como pulsar las teclas ctrl+c, y el número 3 es SIGQUIT que también sale con el teclado utilizando ctrl+\ y si nosotros tenemos muchos procesos y tenemos un servicio que queremos cambiarle la configuración pero sin tener que pararlo y inicializar otra vez el proceso, utilizaremos el número 1 que es SIGHUP, y lo que hará es esto releer la configuración.
Nosotros tenemos una lista de procesos y queremos terminar algunos de ellos, por ejemplo htop que está utilizando más memoria de nuestro de lo debido.
Entonces utilizaremos kill 4929, lo que le dará la señal número 15.
Vemos que no se ha parado porque está en modo stopped. Para acabar su ejecución pondremos -9 que sabemos que lo va a matar. Ahora hacemos un jobs y vemos que ha sido matado y ya no aparece en nuestra lista.
Como vemos, cuando estaba parado no estaba recibiendo las órdenes, entonces no se termina, y algunos procesos no aceptan la orden guion 15 por defecto, entonces tenemos que utilizar -9. Si nosotros matamos un proceso que es el que ha iniciado nuestra sesión, veremos que perdemos la conexión, que se cierra la sesión y se mueren todos los procesos que son hijos.