Запустите два бесконечных скрипта Python - PullRequest
1 голос
/ 29 марта 2019

Есть ли правильный способ запустить два сценария Python, которые никогда не закончатся?

У меня есть Bash Script. Я просто хочу, чтобы он запускал два приложения сервера Python на разных портах. Но, очевидно, когда я доберусь до первой команды python, она зациклится навсегда

есть ли способ убить эти два скрипта Python, когда вы убиваете скрипт bash?

    #!/bin/bash

python RunConstantly.py
python RunConstantly2.py

Может быть, это было бы лучше сделать в python?

Ответы [ 2 ]

2 голосов
/ 29 марта 2019
#!/bin/bash
python RunConstantly.py  &
python RunConstantly2.py &
trap 'kill $(jobs -p)' EXIT
wait

Если оба фоновых процесса умирают или погибают, то команда wait завершается и скрипт завершается нормально.

Если вы прервете скрипт bash (то есть с помощью Ctrl C), то ловушка убьет фоновые задания.

1 голос
/ 29 марта 2019

Если вы как-то не позволяете скрипту bash выходить из последней строки, лучше правильно назвать ваши скрипты и использовать nohup с &.

nohup python Work1.RC1.py > RC1.log 2> RC1.err &
nohup python Work1.RC2.py > RC2.log 2> RC2.err &

Когда вам нужно убить задачи, найдите имя скриптов в вашем списке запущенных процессов

ps aux | grep Work1

и затем используйте идентификаторы процессов, чтобы найти их,

kill -10 pid

Или вы можете объединить команды в цепочку, если знаете, что в вашей системе нет конфликта имен процессов (поэтому на первом этапе важно правильно именовать сценарии)

ps aux | grep Work1 | awk '{print $2}' | xargs -I{} kill -10 {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...