[Comm] Re: [Comm]
Denis Smirnov
=?iso-8859-1?q?mithraen_=CE=C1_freesource=2Einfo?=
Ср Май 14 00:37:39 MSD 2003
On Tue, May 13, 2003 at 09:38:14PM +0500, ASA wrote:
> DS> Приведёшь пример, где это действительно нужно (я про OR)?
> # requires postgres
> # requires musql
И как оно себя поведёт, если отвалится постгрес, когда в конфиге у
этого сервиса прописано использовать именно постгрес?
В любом случае сие должно, IMHO, заменяться на более логичное
# requires sqlserver
> >> а сами
> >> имена не должны больше нигде повторяться (то есть не допускается
> >> одновременное задание имени mta в двух и более рабочих скриптах,
> DS> Скажем есть у нас postgres и mysql. Почему бы им обоим не provides
> DS> sqlserver?
> Но это будет работать только в том случае если последующие
> программы юзают СУБД-незаивсимые интерфейсы...
> А в алгоритм надо внести уточнение: скрипты с requires sqlserver
> запускается только после того как отработают все скрипты,
> которые provides sqlserver и хотя бы один из них будет успешным.
Всё проще. С точки зрения алгоритма просто появится некий виртуальный
скрипт sqlserver, который requires всех тех, кто его provides, и который
не требует запуска.
> DS> > В "корневых" S-скриптах (т.е. таких, которые не зависят от
> DS> > других) пишется
> DS> > # requires none
> DS> > чтобы запускающему скрипту (rc-скрипту) было понятно, что он
> DS> > (S-скрипт) удовлетворяет вышеописанным требованиям.
> DS> А может вообще без параметров?
> а как тогда дать управляющему скрипту понять, что он
> удовлетворяет нашему RFC? ;)
Я имею в виду просто
# requires
> DS> > Проблемы: переход на другой runlevel, в том числе останов?
> DS> Каков сейчас алгоритм перехода на другой runlevel? Я не до конца себе его
> DS> представляю.
> Опишу текущее поведение SysV при переходе на runlevel X:
> Последовательнно перебираются все скрипты в /etc/rc.d/rcX.d от
> K00 до K99, потом от S00 до S99. При переборе K-скриптов
> проверяется, был ли он запущен, согласно записям в
> /var/lock/subsys, если такой "отметился", то он вызывается с
> параметром stop, затем при переборе S-скриптов проверяется -
> если его нет в /var/lock/subsys, то он вызывается с параметром
> start.
> Этот алгоритм хорошо работает как и при первичном запуске, так и
> последующей смене уровней.
Угу... В таком случае нам просто надо построить алгоритм обработки K*
скриптов?
> DS> > Описание алгоритма запуска (в т.ч. лимит на число одновременно
> DS> > запущенных скриптов) - Денису.
> DS> Я, кажется, приводил его в одном из писем. Основная идея в том, что мы
> ab просил все свести в один файл.
Буду думать как более-менее разумно его сформулировать.
> DS> строим дерево очерёдности запуска (не зависимости, а именно очерёдности),
> DS> после чего выбираем все скрипты, которые можно запустить сразу, и создаём
> DS> очередь на исполнения. Из этой очереди скрипты уже и запускаются. После
> DS> завершения скрипта (или попытки его запуска) мы смотрим на наше дерево,
> DS> убираем из него наш скрипт, и модифицируем само дерево в зависимости от
> DS> результата его выполнения и типа связей этого узла с другими (requires или
> DS> after), после чего те скрипты, которые стало возможно запустить,
> DS> отправляем в очередь.
> ОК. Теперь думай как его доработать для смены runlevel'а.
/me пошёл пытаться думать :)
--
С уважением, Денис
http://freesource.info
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/community/attachments/20030514/0619fbaa/attachment-0004.bin>
Подробная информация о списке рассылки community