Bash ne semble pas créer de zombies. Il semble que les processus soient immédiatement récoltés lorsqu'ils sont tués.
Puis-je faire bash faire des zombies?
Pourquoi je demande:
J'aimerais pouvoir tuer un processus enfant en toute sécurité ou en toute sécurité kill -9
s'il ne meurt pas dans un certain laps de temps, mais je ne veux pas zapper accidentellement un processus qui n'est pas mon processus enfant. Les processus Zombie le rendent généralement très facile et sûr pour les conditions de course.
unshare
pour créer un espace de noms PID, de sorte que de l'intérieur de cette arborescence de processus, les processus externes soient isolés et inaccessibles.kill -KILL %n
oùn
est le numéro du travail, etc.), au lieu d'essayer de le contourner.timeout
commande?Réponses:
Pour créer un processus zombie:
Cela remplace le shell qui s'exécute
sleep 1
avec/bin/sleep 10
qui ne saura pas que lesleep 1
processus s'est terminé, créant ainsi un zombie pendant 10 secondes.Je ne sais pas ce que vous attendez de tuer un processus zombie. Un processus zombie était déjà mort, vous ne pouvez pas le tuer.
En fait, vous pouvez faire disparaître les processus zombies, mais en tuant son parent, pas les processus zombies eux-mêmes.
la source
Réponse pas si intéressante:
la source
$BASHPID
est$$
je pense.$BASHPID
ce n'est pas pareil$$
. Essayez de suivre le code:echo $$ $BASHPID ;echo $(echo $$ $BASHPID)
. Vous pouvez trouver plus d'informations dansman bash
.