2010-03-18 8 views
2

Supposons que nous ayons un script BASH exécutant certaines commandes en arrière-plan. À un moment donné, nous voulons tous les tuer, qu'ils aient fini leur travail ou non.Comment tuer tous les processus asynchrones

Voici un exemple:

function command_doing_nothing() { 
    sleep 10 
    echo "I'm done" 
} 

for ((i = 0; i < 3; i++)); do 
    command_doing_nothing & 
done 

echo "Jobs:" 
jobs 

sleep 1 

# Now we want to kill them 

Comment tuer ces 3 emplois en cours d'exécution en arrière-plan?

Répondre

3

Tuer TOUS emplois (tant que ce script est en cours d'exécution dans sa propre instance de shell):

for x in $(jobs -p); do kill $x; done 
+2

S'il vous plaît ne tuez pas le faire '-9' quand il est inutile. http://speculation.org/garrick/kill-9.html –

+0

@Dennis bon point, modifié – Andy