Не уверен, что я понимаю или нет: я запускаю скрипт на нескольких экземплярах AWS во время сеанса экрана. Скрипты основаны на Python и перестали работать через некоторое время из-за сетевых проблем с Amazon Arora и экземпляром EC2. Я вхожу в систему и попадаю в сеанс экрана, выполнив screen -d -r
, останавливаю скрипт и повторно запускаю.
Есть ли способ его автоматизировать? то есть, перезапустить скрипт? У меня нет проблем, если этот другой сценарий убивает существующий экран, а затем запускается снова
Ваш субъект спрашивает о перезапуске сценария через заданный промежуток времени. Если это точный сценарий, используйте cron
, чтобы вызвать python
для запуска ваших скриптов. Я предлагаю взломать оболочку, набрать man cron
и наслаждаться чудесами, которые открываются перед вами.
Если вы хотите отслеживать, запущен ли процесс, а если нет, запустите его снова, у вас есть несколько вариантов, но, скорее всего, вы захотите написать его как службу и использовать систему инициализации операционной системы хоста для ее запуска, а затем такой инструмент, как Monit, upstart или systemd, чтобы убедиться, что он работает, и перезапустите его, если нет.
Я бы сказал, вы только что записали остаток года с планом чтения. =)
Я бы хотел Предлагаем создать подходящий сценарий инициализации, который запускает ваш сценарий в терминальном мультиплексоре, перезапуская сценарий в случае сбоя. Затем, при необходимости, вы можете подключиться к рабочему сеансу screen
или tmux
и отслеживать свой сценарий.
В моем случае у меня есть несколько модулей systemd, которые запускают программы golang на консоли под tmux
и делегируйте жизненный цикл этих программ golang (запуск, перезапуск при сбое, остановка при завершении работы и т. д.) «официальной» системе инициализации вашей ОС.
Я использовал пример в этом вопрос в качестве отправной точки: https://askubuntu.com/questions/802189/how-to-run-tmux-screen-with-systemd-230