<div> </div><div> </div><div>14.07.2014, 15:50, "Grigory Batalov" <grisxa@gmail.com>:</div><blockquote type="cite"><p>В Sat, 12 Jul 2014 00:17:12 +0400<br />Vyacheslav Matyukhin <<a href="mailto:me@berekuk.ru">me@berekuk.ru</a>> пишет:</p><blockquote> Зависимостей в ubic'е нет, и я не понимаю, зачем они, и как их можно<br /> было бы правильно реализовать. Предположим, что A зависит от B, и<br /> сервис B сломался. Что должен делать ubic, выключать сервис A?<br /> показывать его статус как сломанный? зачем? Если A не может работать<br /> без B, он сломается сам. При этом если A обязательно надо запускать<br /> после сервиса B, и без этого ничего не будет работать, то есть такое<br /> обязательное требование на очередность, то это значит, что если B<br /> перезапустится, то A скорее всего сломается, и это плохо, в таком<br /> случае A надо чинить. Если же требования на очередность нет, то<br /> зависимость тоже не нужна. Тем не менее, если очень хочется, можно<br /> проверять статус: Ubic->status("service.name") (возвращает объект<br /> класса Ubic::Result::Class). Но я это все-таки считаю антипаттерном.</blockquote><p>Моя цель проста: обеспечить автоматический запуск всех служб<br />при включении сервера, и без участия админа. Как это делают<br />все init-системы.<br /><br />Если Redis не стартовал или не смог из-за ошибки, то и зависимые<br />от него службы запускать нет смысла. Как и запускать их до него<br />(если только в них не заложена периодическая проверка и реконнект).<br /><br />Т.е. я рассматриваю только команду start: она проверяет требования<br />и стартует службу. А если требования не выполнены, то не стартует.<br /><br />Самый простой вариант, который меня устраивает, это запуск безо<br />всяких проверок, но в заданной очерёдности. Например, как упорядочены<br />симлинки в /etc/rc3.d:<br />S17rsyslog<br />...<br />S20mysql<br /><br />Если я пронумерую сервисы Ubic, это мне гарантирует очерёдность? :-)<br />(Пытался найти это в коде при общем запуске ubic start, но запутался.)<br /><br /># ubic start --force<br />Starting 05_redis... started (pid 12689)<br />Starting 15_myservice... started</p></blockquote><div>Вот я и говорю, что отсутствие периодической проверки и реконнекта, или реконнекта при ошибках - это плохо. Мало ли от чего Redis может упасть или перезапуститься.</div><div> </div><div>Перенумерация гарантирует очередность при ubic start, но не гарантирует при загрузке машины: после загрузки сервисы запускаются вотчдогом, и вотчдог запускает все, что надо запустить, в паралелльном режиме с форками.</div>