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