2010-01-13 8 views
1

J'ai un script shell je l'ai écrit qui fait les étapes suivantes dans une boucle finie:un processus tue tuer d'autres processus

Je Spawn un processus, et attendre qu'elle se termine. Si elle ne se termine pas dans les 40 secondes, j'Execute:

kill -SIGTERM pid 

J'ai trouvé parfois, même en faisant la mise à mort -SIGTERM pid, le processus ne répond pas à être tué. Dans ce cas, après une 40 secondes supplémentaires d'attendre qu'il se tuer, je puis exécuter:

kill -9 pid 

La plupart du temps cela suffit, et je passe à la prochaine itération de ces étapes. Le problème: Parfois, en faisant les étapes ci-dessus, je finis par avoir non seulement le processus que je voulais tuer, mais aussi le shell qui exécute la boucle de ces étapes.

QUESTION: Quelle est la cause?

+4

que diriez-vous de montrer votre code? – ghostdog74

+1

Ça a l'air ... Une fois j'ai dû écrire un job cron qui tuerait les requêtes MySQL toutes les minutes si elles étaient plus d'une minute. Yuck. – gahooa

+0

Il est évident que si vous utilisez la commande Kill -9, il tue tout l'arbre de processus –

Répondre

1

Deux possibilités:

1.) vous passez le PID du script shell ou au lieu du processus enfant

2.) shell/script est sortie normalement simplement parce que le processus de l'enfant mort il n'y a plus rien à faire.