force bash shell scripting kill

bash - force - ¿Qué hace `kill-0 $ pid` en un script de shell?



kill process by id in linux (6)

Esta es una buena pregunta porque ...

... puede ser difícil encontrar documentación sobre esta señal especial. A pesar de lo que otros han dicho, la única mención de esta señal en man 1 kill en sistemas basados ​​en Debian es:

Las señales particularmente útiles incluyen HUP, INT, KILL, STOP, CONT y 0.

No es especialmente útil, especialmente si aún no sabes lo que hace la señal. Tampoco aparece en la lista por el resultado de kill -l , por lo que no sabrá a menos que ya lo sepa.

Dónde encontrarlo documentado

En los sistemas Debian y Ubuntu, la salida de man 2 kill dice, en parte:

Si sig es 0, entonces no se envía ninguna señal, pero la comprobación de errores aún se realiza; esto se puede usar para verificar la existencia de una ID de proceso o ID de grupo de proceso.

Para qué es bueno

Puede usar kill -0 para verificar si un proceso se está ejecutando. Considera estos ejemplos.

# Kill the process if it exists and accepts signals from # the current user. sleep 60 & pid=$! kill -0 $pid && kill $pid # Check if a PID exists. When missing, this should result # in output similar to: # bash: kill: (6228) - No such process # Exit status: 1 kill -0 $pid; echo "Exit status: $?"

También puede usar kill -0 para determinar si el usuario actual tiene permisos para señalar un proceso determinado. Por ejemplo:

# See if you have permission to signal the process. If not, # this should result in output similar to: # bash: kill: (15764) - Operation not permitted # Exit status: 1 sudo sleep 60 & kill -0 $!; echo "Exit status: $?"

Básicamente, qué señal representa ''0'', porque here veo números de SEÑAL que comienzan en 1.


Este comando verifica si el proceso con PID en $ pid está activo.


Kill -0 $ pid es para comprobar si el proceso con pid es existente o no.

Tenga cuidado al usar ''kill -0 $ pid'' para verificar la existencia del proceso porque

  1. Una vez que el proceso previsto sale, su pid puede asignarse a otro proceso recién creado. (Entonces uno no puede estar tan seguro de que ese proceso en particular esté vivo o no)

  2. En el caso de un proceso Zombie, el niño espera que el padre llame para esperar. Aquí contiene el $ pid y da el resultado positivo mientras el proceso no se está ejecutando.


Kill -0 $ pid se usa para verificar si un proceso que se ejecuta con $ pid está vivo o no. Pero esto puede ser complicado, ya que la identificación del proceso puede reasignarse, una vez que se sale del proceso y se ejecuta un nuevo proceso. Uno puede usar killall -0 para obtener un determinado proceso que se está ejecutando o no.


enviando la señal 0 a un PID determinado simplemente comprueba si se está ejecutando algún proceso con el PID dado y usted tiene el permiso para enviarle una señal.

Para obtener más información, consulte las siguientes páginas de manual:

matar (1)

$ man 1 kill ... If sig is 0, then no signal is sent, but error checking is still performed. ... matar (2)

$ man 2 kill ... If sig is 0, then no signal is sent, but error checking is still performed; this can be used to check for the existence of a process ID or process group ID. ...