GNU/Linux >> Tutoriales Linux >  >> Linux

Diferencia entre SIGKILL SIGTERM considerando el árbol de procesos

No puedes controlar eso por señal; solo su proceso principal puede controlar eso, llamando a waitpid() o configurar controladores de señal para SIGCHLD . Ver SIGCHLD y SA_NOCLDWAIT en el sigaction(2) página de manual para más detalles.

Además, lo que sucede con los subprocesos secundarios depende de la versión del kernel de Linux. Con los subprocesos POSIX de 2.6, matar el subproceso principal debería hacer que los otros subprocesos salgan limpiamente. Con 2.4 LinuxThreads, cada hilo es en realidad un proceso separado y SIGKILL no le da al subproceso raíz la oportunidad de decirle a los demás que se apaguen, mientras que SIGTERM lo hace.


Si elimina el proceso raíz (proceso principal), esto debería generar niños huérfanos, no niños zombis. Los niños huérfanos se crean cuando matas al padre de un proceso, y el kernel convierte a init en el padre de los huérfanos. Se supone que init debe esperar hasta que el huérfano muera, luego use esperar para limpiarlo.

Los niños zombis se crean cuando finaliza un proceso (no su padre) y su padre no toma su estado de salida de la tabla de procesos.

Me parece que te preocupa dejar huérfanos porque, por definición, cuando eliminas el proceso padre de un zombi, el niño zombi mismo muere.

Para matar a tus huérfanos, usa kill -9 , que es el SIGKILL equivalente.

Aquí hay un tutorial más detallado para matar cosas en Linux:http://riccomini.name/posts/linux/2012-09-25-kill-subprocesses-linux-bash/


Linux
  1. ¿Diferencia entre Shell de inicio de sesión y Shell sin inicio de sesión?

  2. ¿Nuevo proceso principal cuando muere el proceso principal?

  3. ¿Diferencia entre 2>&-, 2>/dev/null, |&, &>/dev/null y>/dev/null 2>&1?

  4. ¿Cuál es la diferencia entre Sudo Su y Sudo Su?

  5. ¿Diferencia entre Eot y Eof?

Explicación de la diferencia entre apt y apt-get

¿La diferencia entre [[ $a ==Z* ]] y [ $a ==Z* ]?

¿Diferencia entre Snat y Masquerade?

SIGTERM vs SIGKILL:¿Cuál es la diferencia?

Cómo matar el proceso zombie

¿Cuál es la diferencia entre kill, pkill y killall?