У меня есть очень простой скрипт на Python, который я хотел бы всегда запускать на своем сервере Ubuntu 12.04. Я думал об использовании upstart + monit. Проблема в том, что эти инструменты кажутся довольно сложными для простого смертного, такого как я, и я не могу найти простой пример в Интернете.
Является ли upstart + monit overkill? Кто-нибудь знает более простую альтернативу или хороший учебник для upstart + monit? Если я просто хочу убедиться, что скрипт всегда запущен, требуется ли мониторинг?
python
upstart
monitoring
sebpiq
источник
источник
Ответы:
Самый простой способ сделать это - поместить это в
/etc/init/something.conf
:Respawn запустит его обратно, если он убит или выйдет с ненулевым значением (как неперехваченное исключение). Это будет работать, возвращаясь к Ubuntu 10.04.
Если у вас есть 12.04, вы можете получить больше фантазии. Выше будет запускать ваш скрипт от имени пользователя root. В 12.04 вы можете добавить setuid / setgid:
Если ваш сценарий завершается, когда нет доступной сети, и вы планируете запустить его по нестабильному сетевому соединению, хорошо, вы должны это исправить и просто оставить его включенным / повторить попытку. Но если вы не можете, вам также может понадобиться запускать его вручную всякий раз, когда подключается сетевое устройство. Так что вы можете поместить это в
/etc/network/if-up.d/yourscript
(сделать его исполняемым с помощью chmod + x)Где yourscript - это просто что-то произвольное и уникальное для этого конкретного сценария, а «нечто» совпадает с именем задания (например,
/etc/init/something.conf
предложенным ранее).источник
upstart
правильно? Означает ли это, что скрипт также будет запущен при загрузке (что было бы здорово!)? Иrespawn
достаточно, чтобы вам не нужно было настраиватьmonit
?Обычный подход старых времен заключался в том, чтобы записать файл, содержащий метку времени или идентификатор процесса,
/tmp
а затем проверить, был ли этот идентификатор процесса все еще запущен или, соответственно, если метка времени была еще недавно.Также вы можете сделать простой
while [ 1 ]; do phyton-script.ph; done
перезапуск сценария, если он вернется.Для большего количества возможностей, пожалуйста, предоставьте больше информации о вашем сценарии. Особенно о том, почему вы ожидаете, что он неожиданно завершится.
источник