Назад | Перейти на главную страницу

Есть ли у выскочки встроенный способ возрождения процесса, который не останавливается с помощью initctl stop в определенные промежутки времени?

Мы думали, что следующие директивы будут пытаться запустить процесс 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 ... условный.