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