Como matar todos os processos que foram abertos por um script de shell em ctrl + C?

Eu tenho alguns scripts python que eu inicio coletivamente a partir de um script de shell da seguinte forma:

#!/bin/bash
python prog1.py &
python prog2.py &
python prog3.py 

Desde que estou desenvolvendo, muitas vezes quero parar esses processos. Eu normalmente faço isso pressionando ctrl + C, mas infelizmente alguns programas python mantêm (zeromq) soquetes abertos. Isso significa que eu tenho que encontrá-los manualmente (eu usolsof -i), e mate-os usando o PID.

Então, estou procurando uma maneira mais fácil de eliminar automaticamente os processos python do shell quando clico em ctrl + C. Emoutro tópico aqui no Stackoverflow Eu encontrei algum código que supostamente deveria fazer o que eu preciso. Eu simplesmente não entendo nada sobre o código e como posso ajustá-lo às minhas necessidades.

Alguém seria tão gentil em me ajudar aqui?

cat >work.py <<'EOF'
import sys, time, signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
for i in range(10):
    time.sleep(1)
    print "Tick from", sys.argv[1]
EOF 
chmod +x work.py

function process {
    python ./work.py $1
}

process one &
wait $!
echo "All done!"

questionAnswers(1)

yourAnswerToTheQuestion