GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué el proceso secundario sigue vivo después de que el proceso principal se eliminó en Linux?

No, cuando matas un proceso solo, no matará a los niños.

Tienes que enviar la señal al grupo de procesos si desea que todos los procesos de un grupo determinado reciban la señal

Por ejemplo, si su identificación de proceso principal tiene el código 1234, deberá especificar la identificación principal agregando el símbolo menos seguido de la identificación de su proceso principal:

kill -9 -1234

De lo contrario, los huérfanos se vincularán a init , como se muestra en la tercera captura de pantalla (el PPID del niño se ha convertido en 1).


-bash:kill:(-123) - No existe tal proceso

En una sesión interactiva de Terminal.app, el número de identificación del grupo de procesos en primer plano y el número de identificación del grupo de procesos en segundo plano son diferentes por diseño cuando el modo de control/supervisión del trabajo está habilitado. En otras palabras, si pone en segundo plano un comando en una sesión de Terminal.app habilitada para el control de trabajos, el $! pid del proceso en segundo plano es, de hecho, un nuevo número de identificación de grupo de proceso (pgid).

Sin embargo, en un script que no tiene habilitado el control de trabajos, ¡este puede no ser el caso! ¡El pid del proceso en segundo plano puede no ser un pgid nuevo sino un pid normal! Y esto es lo que provoca el mensaje de error -bash: kill: (-123) - No such process , tratando de eliminar un grupo de procesos pero solo especificando un pid normal (en lugar de un pgid) para el kill comando.

# the following code works in Terminal.app because $! == $pgid
{
sleep 100 &
IFS=" " read -r pgid <<EOF
$(ps -p $! -o pgid=)
EOF
echo $$ $! $pgid
sleep 10
kill -HUP -- -$!
#kill -HUP --  -${pgid}  # use in script
}

Linux
  1. Linux:¿cuándo no debo matar -9 un proceso?

  2. ¿Por qué el Pgid de los procesos secundarios no es el Pid del padre?

  3. ¿Cómo hacer que el proceso hijo muera después de que el padre salga?

  4. Encontrar qué proceso fue eliminado por Linux OOM killer

  5. ¿Qué mató mi proceso y por qué?

Cómo matar un proceso en Linux

Comando matar en Linux

Cómo matar procesos Zombie en Linux

5 formas rápidas de matar un proceso en Linux

Cómo MATAR un proceso en Linux

¿Por qué no puedo matar este proceso en Linux?