Как убить все процессы, которые были открыты сценарием оболочки при Ctrl + C?
У меня есть пара сценариев Python, которые я начинаю вместе с сценария оболочки следующим образом:
#!/bin/bash
python prog1.py &
python prog2.py &
python prog3.py
Поскольку я развиваюсь, я часто хочу остановить эти процессы. Обычно я делаю это, нажимая Ctrl + C, но, к сожалению, пара программ на Python сохраняет (zeromq) сокеты открытыми. Это означает, что я должен вручную найти их (я используюlsof -i) и убить их, используя PID.
Поэтому я ищу более простой способ автоматического уничтожения этих процессов Python из оболочки, когда я нажимаю Ctrl + C. Надругой поток здесь на Stackoverflow Я нашел код, который предположительно должен делать то, что мне нужно. Я просто ничего не понимаю в коде и в том, как я могу настроить его под свои нужды.
Кто-нибудь будет так любезен, чтобы помочь мне здесь?
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!"