«Возрождается слишком быстро, остановился». Как отключить UPSTART на 5 минут?

11

В старые времена демон init раньше отключал задачи, которые возникали слишком быстро.

Я обнаружил на свой страх и риск, что UPSTART просто останавливает их. навсегда.

Я нашел элементы управления COUNT и INTERVAL для того, когда нужно остановить быстро возобновляющееся задание, но не могу найти способ перезапустить это задание после определенного времени ожидания.

  • Это для удаленного сервера, который должен подключиться через ssh, чтобы я смог вернуться в него. Но у него регулярно возникают проблемы с подключением, и работа, выполняющая ssh-соединение, умирает Я глупо ожидал, что выскочка продолжит работу.

Есть ли способ, или мне нужно сделать что-то вроде запуска задания cron, чтобы проверить, запущено ли оно, и если нет, перезапустите его?

Кит
источник

Ответы:

10

Upstart позволяет после остановки спать, чтобы отложить перезапуск задания. С http://upstart.ubuntu.com/cookbook/#delay-respawn-of-a-job

post-stop exec sleep 5

Теперь, когда задание не выполняется, оно будет ждать 5 секунд, прежде чем попытаться подключиться снова. Объедините это с установкой респауна на что-то вроде 10 раз за 30 секунд, и он должен пытаться возродиться вечно (он будет пытаться делать это только 7 раз за 30 секунд, поэтому его не следует выбрасывать из респауна)

tgm4883
источник
Да, это хороший обходной путь, я полагаю. Интересно, должен ли выскочка иметь возможность указать время ожидания, прежде чем пытаться снова запустить задание. Мне действительно не нравится идея просто остановить работу. Я предпочел способ init отключить работу на пять минут.
Кит
Я думаю, что сценарий использования, о котором вы говорите, довольно низкий. Если работа терпит неудачу, есть причина для этого, поэтому она должна быть исправлена. Большинство людей не хотели бы, чтобы работа продолжала пытаться начать и потерпеть неудачу, поскольку это могло бы очистить журналы с ценной информацией или иметь другие катастрофические результаты. Я думаю, что вы используете upstart для чего-то, для чего он не предназначен, поэтому о стандартных методах его перезапуска может быть и речи. Тем не менее, сетевое соединение на этой машине пытается восстановить соединение, когда соединение умирает? Если это так, вы можете начать работу в сети.
tgm4883
1
Я уверен, что вы правы, что это далеко не «дело большинства людей». Поскольку я взломал slackware и специализированные системы за последние 20 лет, многие из этих концепций мне чужды. Не могли бы вы указать мне правильное направление для настройки запуска / перезапуска сети Ubuntu? Боже, это заставляет меня чувствовать себя старым и потерявшим связь. Я мог сделать это на Slackware за 10 секунд.
Кит
1
это описано в кулинарной книге; они рекомендуют использовать постстопную
jcomeau_ictx
1
Спасибо @jcomeau_ictx, вот именно это, я думаю, что ответ должен быть обновлен со ссылкой на него upstart.ubuntu.com/cookbook/#delay-respawn-of-a-job . Также есть принятый билет и патч для запроса Keith bugs.launchpad.net/upstart/+bug/252997 со временем ожидания респауна перед повторной попыткой.
Андре Мирас