¿Cómo eliminar todos los procesos que fueron abiertos por un script de shell en ctrl + C?

Tengo un par de scripts de python que empiezo colectivamente desde un script de shell de la siguiente manera:

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

Ya que estoy desarrollando a menudo quiero detener estos procesos. Normalmente lo hago presionando ctrl + C, pero, por desgracia, un par de programas de python mantienen los zócalos abiertos (zeromq). Esto significa que luego tengo que encontrarlos manualmente (yo usolsof -i), y matarlos usando el PID.

Así que estoy buscando una forma más fácil de eliminar automáticamente esos procesos de Python desde el shell cuando presiono ctrl + C. Enotro hilo aquí en Stackoverflow Encontré un código que supuestamente debería hacer lo que necesito. Simplemente no entiendo nada sobre el código y cómo podría ajustarlo a mis necesidades.

¿Alguien sería tan amable de ayudarme aquí?

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!"

Respuestas a la pregunta(1)

Su respuesta a la pregunta