GNU/Linux >> Tutoriels Linux >  >> Linux

Différence entre SIGKILL SIGTERM compte tenu de l'arborescence des processus

Vous ne pouvez pas contrôler cela par signal; seul son processus parent peut contrôler cela, en appelant waitpid() ou définir des gestionnaires de signaux pour SIGCHLD . Voir SIGCHLD et SA_NOCLDWAIT dans le sigaction(2) page de manuel pour plus de détails.

De plus, ce qui arrive aux threads enfants dépend de la version du noyau Linux. Avec les threads POSIX de la version 2.6, la suppression du thread principal devrait entraîner la fermeture propre des autres threads. Avec 2.4 LinuxThreads, chaque thread est en fait un processus séparé et SIGKILL ne donne pas au thread racine une chance de dire aux autres de se fermer, alors que SIGTERM fait.


Si vous tuez le processus racine (processus parent), cela devrait créer des enfants orphelins et non des enfants zombies. les enfants orphelins sont créés lorsque vous tuez le parent d'un processus, et le noyau fait de init le parent des orphelins. init est censé attendre que l'orphelin meure, puis utilisez wait pour le nettoyer.

Les enfants zombies sont créés lorsqu'un processus (pas son parent) se termine et que son parent ne prend pas son statut de sortie de la table de processus.

Il me semble que vous craignez de laisser des orphelins car, par définition, lorsque vous tuez un processus parent zombie, l'enfant zombie lui-même meurt.

Pour tuer vos orphelins, utilisez kill -9 , qui est l'équivalent de SIGKILL.

Voici un tutoriel plus approfondi pour tuer des trucs sur Linux :http://riccomini.name/posts/linux/2012-09-25-kill-subprocesses-linux-bash/


Linux
  1. Différence entre le shell de connexion et le shell sans connexion ?

  2. La Différence Entre [[ $a ==Z* ]] Et [ $a ==Z* ] ?

  3. La différence entre Kill, Pkill et Killall ?

  4. Différence entre $HOME et '~' (tilde) ?

  5. Détecter la mort du processus parent

Différence entre apt et apt-get expliquée

Différence entre [0-9], [[:digit:]] et D ?

Différence entre snat et mascarade?

SIGTERM vs SIGKILL :Quelle est la différence ?

La différence entre fork(), vfork(), exec() et clone()

Le processus enfant reçoit le SIGINT du parent