tuer des processus Parent avec enfant de processus à l'aide de SIGKILL
Je suis en train d'écrire un script shell dans lequel j'ai du processus parent et enfant a des processus qui sont créés par sleep &
de commande. Maintenant, je veux tuer le processus parent, de sorte que le processus de l'enfant seront également tués. J'ai été capable de faire cela avec la commande ci-dessous:
trap "kill $$" SIGINT
trap 'kill -HUP 0' EXIT
trap 'kill $(jobs -p)' EXIT
Ces commandes sont à travailler avec kill [parent_process_ID]
commandes, mais si j'utilise kill -9 [parent_process_ID]
alors seulement que le processus père sera tué.
Merci de me guider plus loin pour obtenir cette fonctionnalité, de sorte que lorsque je tue le processus parent avec n'importe quelle commande puis processus enfant doit également être tué.
OriginalL'auteur user3242440 | 2014-02-19
Vous devez vous connecter pour publier un commentaire.
Lorsque vous tuez un seul processus, il ne sera pas tuer les enfants.
Vous devez envoyer un signal au processus de groupe si vous voulez tous les processus d'un groupe donné pour recevoir le signal.
Sinon, les orphelins seront liés à
init
.Enfant peut demander à noyau de livrer
SIGHUP
(ou autre signal) lorsque la mère meurt en spécifiant l'optionPR_SET_PDEATHSIG
dansprctl()
syscall comme ceci:Voir
man 2 prctl
pour plus de détails.OriginalL'auteur Jayesh Bhoi
L'envoi de la
-9
signal (SIGKILL
) à un programme donne aucune chance pour exécuter ses propres gestionnaires de signaux (par exemple, votretrap
consolidés). C'est pourquoi les enfants ne sont pas tués automatiquement. (En général,-9
donne pas chance pour l'application de nettoyer après lui-même.) Vous devez utiliser un signal plus faible pour le tuer (commeSIGTERM
.)Voir
man 7 signal
pour plus de détails.OriginalL'auteur jpaugh