2016-11-08 4 views
2

Je suis en train de faire une opération linux essayant de brûler cpu en utilisant la vitesse de OpenSSLComment tuer les processus fils dans Bash?

c'est mon code de netflix armée simiesque

#!/bin/bash 
# Script for BurnCpu Chaos Monkey 

cat <<EOF> /tmp/infiniteburn.sh 
#!/bin/bash 
while true; 
    do openssl speed; 
done 
EOF 

# 32 parallel 100% CPU tasks should hit even the biggest EC2 instances 
for i in {1..32} 
do 
    nohup /bin/bash /tmp/infiniteburn.sh & 
done 

si ce code est Netflix armée simiesque faire cpu brûlure, cette exécute correctement, mais le problème est que je ne peux pas tuer tous les 32 processus, j'ai tout essayé

pkill -f pid/process name 
killall -9 pid/process name 
etc., 

la seule façon réussie je tuais le processus est en tuant via utilisateur

Comment puis-je supprimer ces processus sans utiliser de nom d'utilisateur?
pkill -u username 

toute aide est grandement appréciée

+0

Avez-vous essayé 'kill -9 pid'? –

+0

oui j'ai essayé que pas de chance –

+0

Peut-être lié/peut-être un doublon: [Meilleure façon de tuer tous les processus enfant] (http://stackoverflow.com/q/392022). Étroitement lié est [Comment tuer tous les sous-processus de shell?] (Http://stackoverflow.com/q/2618403/) Quelqu'un avec plus d'expérience Bash alors moi qui comprend les subtilités devra décider. – jww

Répondre

1

Tuer un processus qui ne tue pas automatiquement ses enfants. Tuer votre script bash ne va pas tuer les processus openssl speed.

Vous pouvez lancer un appel plus large avec votre appel kill, ce que vous faites avec pkill -u. Ou vous pouvez utiliser trap dans votre script et ajouter un gestionnaire d'erreurs.

cleanup() { 
    # kill children 
} 

trap cleanup EXIT 
+0

Vous pouvez soit jeter un filet plus large avec votre appel kill? Pourriez-vous s'il vous plaît fournir plus d'informations à ce sujet, –