Saltar al contenido

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

Sé libre de compartir nuestra página y códigos con otro, ayúdanos a aumentar nuestra comunidad.

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 ID de proceso principal tiene el código 1234, deberá especificar el ID principal agregando el símbolo menos seguido de su ID de proceso principal:

kill -9 -1234

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

-bash: kill: (-123) - No hay 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 causa el mensaje de error. -bash: kill: (-123) - No such processtratando de eliminar un grupo de procesos pero solo especificando un pid normal (en lugar de un pgid) para el kill mando.

# the following code works in Terminal.app because $! == $pgid

sleep 100 &
IFS=" " read -r pgid <

pkill -TERM -P 

Esto matará tanto al padre como al niño.

Agradecemos que desees añadir valor a nuestro contenido informacional asistiendo con tu veteranía en las notas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.