Мы думали, что следующие директивы будут пытаться запустить процесс 10 раз за 60 секунд (то есть каждые 6 секунд):
respawn
respawn limit 10 60
Однако эти директивы перезапускают процесс, как только он выйдет из строя. Таким образом, процесс может возродиться 10 раз за 1 секунду.
Есть ли способ настроить нашу службу так, чтобы при сбое она пыталась возродить ее 10 раз каждые 6 секунд?
В Поваренной книге Ubuntu Upstart есть Ответ для этого:
Если в задании указано возрождение, но вы по какой-то причине хотите отложить возрождение, просто используйте строфу после остановки:
respawn exec mydaemon post-stop exec sleep 10
Теперь каждый раз, когда mydaemon завершает работу с ненулевым кодом возврата, задание засыпает на 10 секунд, прежде чем Upstart перезапустит его.
Для реальной службы вы, вероятно, использовали бы строфу сценария после остановки для выполнения проверки, а не просто для сна.
Если честно, я не уверен, если и почему пост-остановка вызывается только для ненулевых кодов завершения задания, но это решение предлагает руководство. Вы всегда можете использовать post-start script
и добавить чек, чтобы сделать sleep ...
условный.