GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi le processus enfant est-il toujours en vie après la suppression du processus parent sous Linux?

Non, lorsque vous tuez un processus seul, il ne tuera pas les enfants.

Vous devez envoyer le signal au groupe de processus si vous voulez que tous les processus d'un groupe donné reçoivent le signal

Par exemple, si votre identifiant de processus parent a le code 1234, vous devrez spécifier le parentpid en ajoutant le symbole moins suivi de votre identifiant de processus parent :

kill -9 -1234

Sinon, les orphelins seront liés à init , comme le montre votre troisième capture d'écran (le PPID de l'enfant est devenu 1).


-bash :kill :(-123) - Aucun processus de ce type

Dans une session Terminal.app interactive, le numéro d'identification du groupe de processus de premier plan et le numéro d'identification du groupe de processus d'arrière-plan sont différents de par leur conception lorsque le mode de contrôle/surveillance des tâches est activé. En d'autres termes, si vous mettez en arrière-plan une commande dans une session Terminal.app activée pour le contrôle des tâches, le $! Le pid du processus en arrière-plan est en fait un nouveau numéro d'identification de groupe de processus (pgid).

Dans un script n'ayant aucun contrôle de travail activé, cependant, cela peut ne pas être le cas ! Le pid du processus en arrière-plan peut ne pas être un nouveau pgid mais un pid normal ! Et c'est ce qui cause le message d'erreur -bash: kill: (-123) - No such process , en essayant de tuer un groupe de processus mais en spécifiant uniquement un pid normal (au lieu d'un pgid) au kill commande.

# 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 - Quand ne devrais-je pas tuer -9 Un processus ?

  2. Fonctionnement du cycle de vie des processus Linux - processus parent, enfant et init

  3. kill Exemples de commandes sous Linux

  4. Qu'est-ce qui a tué mon processus et pourquoi ?

  5. Comment tuer un processus enfant après un délai d'attente donné dans Bash?

Comment tuer un processus sous Linux

Commande Kill sous Linux

Comment tuer les processus Zombie sous Linux

5 façons rapides de tuer un processus sous Linux

Comment tuer un processus sous Linux

Pourquoi ne puis-je pas tuer ce processus sous Linux ?