Jak zabić wszystkie procesy, które zostały otwarte przez skrypt powłoki po Ctrl + C?

Mam kilka skryptów Pythona, które zaczynam od skryptu powłoki w następujący sposób:

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

Ponieważ się rozwijam, często chcę zatrzymać te procesy. Zwykle robię to naciskając ctrl + C, ale niestety kilka programów Pythona utrzymuje gniazda (zeromq) otwarte. Oznacza to, że muszę je ręcznie znaleźć (używamlsof -i) i zabij ich używając PID.

Więc szukam łatwiejszego sposobu automatycznego zabijania tych procesów Pythona z powłoki, gdy wciskam ctrl + C. Nakolejny wątek na Stackoverflow Znalazłem kod, który podobno powinien robić to, czego potrzebuję. Po prostu nie rozumiem nic o kodzie i jak mogę go dostosować do moich potrzeb.

Czy ktoś byłby tak uprzejmy, aby mi pomóc tutaj?

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