¿Hay alguna diferencia entre
kill -9 212121
y
kill 212121
command-line
bash
usuario784637
fuente
fuente
kill -9
Respuestas:
La página de manual de Ubuntu para
kill
explica el propósito del-9
cambio (es cierto que de una manera bastante entrecortada):Esto es lo que dice otra página de manual .
Por lo tanto, el uso del
-9
interruptor garantiza que el proceso se elimine efectivamente. Aunque un proceso congelado o que no responde puede no responder a unaTERM
señal simple , morirá cuando se envíe unaKILL
señal.fuente
El comando kill enviará una señal definida a un proceso con una identidad dada (PID):
Por supuesto, solo podemos matar los procesos que poseemos, mientras que root puede matar todos los procesos. Ver Wikipedia para un buen resumen de las señales de computación.
Las señales que se
kill
pueden enviar se enumeran en la página de manual . La señal se puede representar por nombre o por número. Si no se da ninguna señal, la señal predeterminada 15 resp.TERM
es usadoLos tres comandos a continuación son, por lo tanto, idénticos:
La diferencia entre
SIGTERM
ySIGKILL
es la forma en que una aplicación puede actuar sobre la señal:TERM
: una aplicación podrá finalizar, es decir, ejecutar correctamente una rutina de apagado.KILL
: las aplicaciones se detienen y se eliminan de inmediato (lo que podría conducir a la pérdida de datos o aumentar el número de informes para informar un presunto bloqueo en algunos casos).fuente
Tenga en cuenta que todos los siguientes son sinónimos:
Vale la pena señalar que en el mundo del manejo de señales, SIGKILL es uno de los pocos que maneja el sistema operativo, no el programa. Cuando ejecuta
kill -9
, no le está diciendo a la aplicación que finalice, sino que le está diciendo al sistema operativo que deje de ejecutar el programa, sin importar lo que esté haciendo.Después de enviar SIGKILL , el programa se detendrá inmediatamente. Si se están ejecutando llamadas al kernel (por ejemplo, Archivo IO) en nombre del programa, esas llamadas pueden continuar o no hasta que finalicen, dependiendo de la llamada, pero el programa en sí no se ejecutará más. Tenga en cuenta que las tareas rastreadas o las tareas que se ejecutan bajo un depurador pueden comportarse de manera diferente aquí.
La otra señal que no se puede bloquear es SIGSTOP, que tiene un efecto similar, pero en cambio congela el programa; puede enviar SIGCONT más tarde para reanudarlo. Este comportamiento está completamente controlado por el sistema operativo y el programa no recibe ninguna notificación previa.
Todas las otras señales se envían al programa; puede manejarlos como quiera, o si ignora la señal, se sigue un comportamiento predeterminado.
Aquí hay algunas señales útiles que puede estar enviando a un proceso:
Le dice al programa que el usuario ha desconectado (por ejemplo sesión SSH o ventana de terminal estaba cerrada).
Por lo general, hace un apagado elegante del programa.
Enviado cuando golpeas CTRL+ C
Por lo general significa "detener lo que estás haciendo" - puede o no matar el programa
El valor predeterminado enviado por
kill
ykillall
.Por lo general, finaliza el programa ... a veces después de que el programa termina lo que sea que esté haciendo.
envío cuando presiona CTRL+ Z
Pausa el programa, discutido anteriormente
Le dice al programa que la tubería se ha cerrado. Usualmente termina el programa.
Por ejemplo
cat /etc/passwd | head -n1
, enviará SIGPIPE alcat
proceso después de que se imprima la primera línea, haciendocat
que finalice antes de terminar todo el archivo.Si bien todas estas señales suceden "naturalmente" en su propio entorno, puede utilizar la señal para simular una condición para lograr el resultado deseado.
Por ejemplo, si desea finalizar la sesión SSH de alguien, simplemente puede eliminar el proceso, pero al hacerlo evitará que actualice su archivo HISTORY, lo que puede ser importante por razones de seguridad. Pero en cambio, si lo envía SIGHUP , el proceso asumirá que la conexión se ha interrumpido y realizará su limpieza estándar.
fuente
SIGQUIT
, donde la acción predeterminada es volcar el núcleo y terminar. Esto se puede usar si un programa está haciendo algo muy incorrecto, debe detenerlo de inmediato y desea poder depurarlo más tarde.kill -9 Significado: El proceso será eliminado por el kernel; Esta señal no puede ser ignorada. 9 significa señal de KILL que no es capturable o ignorable
Usos: SIGKILL Singal
Significado de matar : el comando de matar sin ninguna señal pasa la señal 15, que finaliza el proceso de la manera normal.
Usos: señal SIGTERM , que puede ser manejada por programadores
fuente