Есть ли параметр счетчика повторов для svscan?

вы просто редактируете строку:

ssh $host /path/of/chk_auto_up > "cmd_output.txt"

Определите абсолютный путь команды.

1
22.03.2016, 10:23
2 ответа

Согласившись с тем, что svscan не имеет гибкости, вы можете рассмотреть monit , который поддерживает скрипты.

0
27.01.2020, 23:48

Оригинальный daemontools Бернштейна не имеет механизма для этого. Есть только run программа в каталоге служб и фиксированная политика автоперезапуска. Однако несколько представителей семейства daemontools усовершенствовали этот механизм и создали гибкие механизмы общего назначения, которые можно использовать для решения подобных ситуаций.

Это все механизмы общего назначения, которые могут быть использованы в вашей ситуации. Здесь я лишь собираюсь более подробно обсудить управление службами nosh. Должно быть достаточно очевидно, как применить это к остальным.

управление автоперезапуском в nosh

В управлении сервисами nosh используются те же расширенные (относительно оригинала Бернштейна) состояния сервиса, что и в daemontools-encore: остановлен, запущен, запущен, работает, не удалось, и остановлен.

Перед запуском службы, когда она находится в состоянии start, менеджер служб nosh запускает программу start.

Когда служба завершается, но все еще находится в состоянии "up", менеджер службы nosh запускает программу restart в состоянии failed, чтобы определить, следует ли перейти обратно в состояние running или в состояние stopping (и далее в состояние stopped). Программа restart делает это определение для конкретной службы, и она явно является местом для принятия решений о том, перезапускалась ли служба "слишком много раз" или стала неперезапускаемой каким-то другим способом.

restart в качестве аргументов командной строки передается информация о том, как завершился основной процесс сервиса (был ли это обычный выход или в ответ на сигнал, а также код выхода или конкретный сигнал). Менеджер служб выбирает переход обратно в состояние running, если программа restart может быть запущена и завершается со статусом успеха, и переходит в состояние stopping (и далее stopped) в противном случае.

restart и start могут быть чем угодно: Perl-программы, shell-скрипты, execline-программы, скомпилированные двоичные файлы и так далее. Это довольно тривиальные упражнения в написании сценариев оболочки, с case...esac и if...fi. Есть несколько примеров restart программ, написанных в shell script, поставляемых в пакете nosh-bundles, который доступен для Debian/Ubuntu и для FreeBSD/PC-BSD/DragonFlyBSD/&c. .

Итак, чтобы принять решение о том, была ли служба перезапущена "слишком много раз", вы должны в программе start обнулить инициализацию счетчика (в файле в каталоге службы), а в программе restart увеличить этот счетчик и вернуть статус успеха, только если счетчик меньше определенного значения. Конечно, вы можете сделать так, чтобы решение включало больше и других факторов.

  • Вы можете, скажем, также захотеть прекратить автоперезапуск, если служба аварийно завершается или прерывается с сигналом, и автоперезапускаться только в том случае, если она завершается чисто или завершается сигналом "чистого завершения", таким как SIGTERM.
  • Вы можете, например, захотеть остановить автозапуск, если обнаружите, что служба стала поврежденной (каким-то специфическим для службы способом) до такой степени, что она больше не может нормально запускаться без вмешательства администратора.
  • Можно, например, ввести какой-то механизм дросселирования скорости, включающий расчетный период сна.

Дальнейшее чтение

  • Джонатан де Бойн Поллард (2015). Семейство daemontools. Часто задаваемые ответы.
  • Джонатан де Бойн Поллард. service-manager. nosh Guide

    Руководство nosh Guide доступно как пакет Debian/Ubuntu и пакет FreeBSD/PC-BSD/DragonFlyBSD/&c., а руководство service-manager доступно на вашей машине без необходимости подключения к Интернету через:

    • man service-manager
    • xdg-open /usr/local/share/doc/nosh/service-manager.html
  • Bruce Guenter. supervise. руководство daemontools-encore. §8.
  • Gerrit Pape. runsv. руководство runit. §8.
  • Уэйн Маршалл (2013). perpetrate. руководство perp. §5.
  • Laurent Bercot. s6-supervise. руководство по s6. Программное обеспечение Skarnet.
1
27.01.2020, 23:48

Теги

Похожие вопросы