59 votos

¿Cuál es el propósito de la -9 opción en el comando kill?

Hay una diferencia entre

kill -9 212121

y

kill 212121

43voto

Mike L Puntos 239

El matar comando enviará definida una señal a un proceso con una determinada identidad (PID):

kill -<signal> <pid>

Por supuesto, sólo podemos matar los procesos que poseemos, mientras que la root puede matar a todos los procesos. Ver Wikipedia para un buen resumen de la informática señales.

Las señales de kill puede enviar aparecen en el manual. La señal puede ser representada por nombre o por número. Si la señal no está determinado el valor predeterminado de la señal de 15 resp. TERM se utiliza.

Los tres comandos siguientes, por lo tanto son idénticos:

kill -9 1234
kill -KILL 1234
kill -SIGKILL 1234

La diferencia entre SIGTERM y SIGKILL es la forma en que una aplicación puede actuar sobre la señal:

  • TERM: una aplicación va a ser capaz de terminar, es decir, ejecutar correctamente una rutina de apagado.
  • KILL: las aplicaciones es detenido y asesinado de inmediato (lo que podría conducir a la pérdida de datos o de sensibilización apport para denunciar un presunto bloqueo en algunos casos).

32voto

SirCharlo Puntos 16120

El Ubuntu página man para kill explica el propósito de la -9 interruptor (es cierto que en un lugar entrecortado de moda):

Name     Num   Action    Description
KILL       9   exit      cannot be blocked

He aquí lo que otro hombre la página dice.

El comando kill envía la señal especificado especificado para cada proceso o grupo de procesos. Si la señal no está especificado, el TERM se envía la señal. El TERM de la señal va a matar procesos que no atrapar a este de la señal. Para otros procesos, puede ser necesario el uso de la KILL (9) de la señal, ya que esta señal no puede ser capturado.


Por lo tanto, el uso de la -9 interruptor se asegura de que el proceso se mató con eficacia. Aunque congelado o no responde proceso no puede responder a una simple TERM de la señal, se va a morir cuando se envía un KILL de la señal.

18voto

Florence Wilson Puntos 26

Tenga en cuenta que todos los siguientes son sinónimos:

kill -9 1234
kill -KILL 1234
kill -SIGKILL 1234

Vale la pena señalar que en el mundo de la señal de manipulación, SIGKILL es uno de los pocos único que es manejado por el sistema operativo , no el programa. Cuando ejecute kill -9, no está diciendo que la aplicación termine en sí mismo, sino que está indicando al sistema operativo para detener la ejecución del programa, no importa lo que el programa está haciendo.

Después de SIGKILL es enviado, el programa será inmediatamente detenido. Si cualquier kernel de llamadas se están ejecutando (por ejemplo, e / s de Archivo) en el programa del nombre, esas llamadas puede o no puede continuar hasta que termine, dependiendo de la convocatoria, pero el programa en sí no funcionará más. Tenga en cuenta que remontar tareas o tareas que se ejecutan bajo un depurador puede comportarse de manera diferente aquí.

La otra señal que no puede ser bloqueada es SIGSTOP que tiene un efecto similar, pero en lugar de eso se congela el programa, usted puede enviar SIGCONT más tarde para continuar con ella. Este comportamiento es completamente controlado por el sistema operativo y el programa no recibe ninguna notificación previa.

Todas las demás señales se envían al programa; puede manejarlos sin embargo se elige, o si ignora la señal, a continuación, un comportamiento predeterminado es seguido.

Aquí hay un par de señales útiles que usted puede encontrar usted mismo se envía a un proceso de:

  • SIGHUP -- hangup
    Le dice al programa que el usuario desconectado (por ejemplo, sesión de SSH o ventana de terminal estaba cerrada).
    Generalmente se hace un cierre del programa.
  • SIGINT -- interrupción
    Envía cuando se pulse CTRL+C
    Generalmente significa "detener lo que estás haciendo" -- puede o no puede terminar el programa
  • SIGTERM -- terminar
    El valor predeterminado enviado por kill y killall.
    Termina el programa... a veces después de que el programa termine lo que está haciendo.
  • SIGSTOP -- stop
    Envía cuando se pulse CTRL+Z
    Detiene el programa, se discutió anteriormente
  • SIGPIPE -- tubo cerrado
    Le dice al programa que el de la tubería se ha cerrado. Termina el programa.
    Por ejemplo cat /etc/passwd | head -n1 enviará SIGPIPE a la cat proceso después de la primera línea se imprime, causando cat a terminar antes de terminar todo el archivo.

Mientras que todas estas señales ocurren "naturalmente" en su propia configuración, puede utilizar la señal para simular una condición para lograr el resultado deseado.

Por ejemplo, si desea terminar de alguien sesión de SSH puede simplemente matar el proceso, pero si lo vas a impedir que la actualización de su HISTORIAL de archivo, que puede ser importante por razones de seguridad. Pero si en lugar de enviarlo SIGHUP, entonces el proceso se asume que la conexión ha muerto y va a realizar su estándar de limpieza.

6voto

devav2 Puntos 13289

kill -9 Significado: El proceso va a ser asesinado por el núcleo; esta señal no puede ser ignorada. 9 significa MATAR señal de que no es capturable o ignorable

Usos: SIGKILL singal

Matar Significado: El comando kill sin ninguna señal pasa la señal 15, que termina el proceso de la manera normal.

Usos: SIGTERM de la señal, que puede ser manejado por los programadores

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: