Хорошо, вот моя ситуация:Как перезапустить скрипт python, запущенный внутри экрана, используя сценарий bash?
На сервере у меня сеанс экрана (который был инициирован с использованием screen -S python-script
), который запускает внутри него скрипт python.
Я вношу изменения в этот проект, нажав на git repo. Когда я хочу, чтобы изменения, отраженные в проекте, я SSH на сервер, screen -x python-script
, а затем Ctrl-C, чтобы отправить прерывание клавиатуры, затем git pull origin master
, а затем ./run_script.py
Я хочу сделать что-то умное и сделать мой проект в состоянии обновить и перезапустить. Другой небольшой сервер python будет жить на этом удаленном сервере и слушать запрос от моего проекта, этот сервер python будет использовать subprocess
для запуска сценария bash, который будет обновлять и перезапускать мой проект.
Это немного запутанно, я знаю, и мне действительно нравятся некоторые предложения, если есть лучший способ сделать то, что я хочу.
Прямо сейчас, если бы я мог сформулировать сценарий bash, чтобы делать то, что я ищу, тогда я знаю, что это сработает (возможно ..).
Вы можете использовать 'pkill', чтобы убить исполняемый скрипт и убить экран. С этого момента вы можете запустить скрипт через экран, 'screen -S python-script bash -c" git pull origin master; ./run_script.py ". Каждый раз, когда вы убиваете 'run_script.py', экран автоматически заканчивается. – alvits
К сожалению, внутри экрана происходит некоторая серьезная настройка окружения. Поддержание сеанса экрана очень важно. Кроме того, мне нужно обязательно отправить прерывание клавиатуры, потому что используемая инфраструктура является потоковой, и она распознает прерывания клавиатуры, чтобы безопасно закрывать все. –
Что мешает вам написать файл окружения, который можно получить? Отправка 'SIGINT' в процесс эквивалентна нажатию' Ctrl + C'. Что мешает вам отправлять этот сигнал в ваш процесс? Если ни одно из них не может быть выполнено, тогда вам будет лучше с вашим текущим ручным процессом. – alvits