[Comm] Re: [Comm]

ASA =?iso-8859-1?q?llb_=CE=C1_udm=2Eru?=
Вт Май 13 20:38:14 MSD 2003


Hello Denis,

Tuesday, May 13, 2003, 6:30:16 PM, you wrote:

>> успешного    запуска   других   скриптов.   Параметры   requires
>> складываются по правилу AND, несколько requires OR'ятся.

DS> Приведёшь пример, где это действительно нужно (я про OR)?

# requires postgres
# requires musql

>> Поле  after  может  встречаться  (если  вообще  есть)  один  или
>> несколько  раз  и  описывает т.н. мягкую зависимость скрипта, то
>> есть  указывает,  после _просмотра_ или _попытки запуска_ какого
>> скрипта  он  должен  запускаться Параметры after складываются по
>> правилу AND, несколько requires OR'ятся

DS> Может "просмотра" заменить на "попытку поиска"?

Наверно.

>> Если какое-то after-имя не встречается в других скриптах (имя
>> скрипта или поле provides), то он считается не запущенным.

DS> Эту фразу, честно говоря, я при первой прочтении даже не заметил :(

Я сам считаю ее сомнительной :)

DS> Я бы даже разделил пространства имён пакетов и provides (добавив
DS> какой-нибудь символ в начало имён последних). Смысл у них ведь совершенно
DS> разный. Одно дело "мне нужен postfix", а другое дело "мне нужно некое
DS> средство доставки почты".

ОК, согласен.

>> Допускается  задание  нескольких  имен в одном provides, но сама
>> строка  provides должна быть одна (если она вообще есть),

DS> А оно надо, это ограничение? IMHO если можно указывать несколько в одной
DS> строке, то разбор не сильно усложнится от того, что этих строк может быть
DS> больше. А иметь их больше позволит комментировать каждую.

наверно.

>> а сами
>> имена не должны больше нигде повторяться (то есть не допускается
>> одновременное задание имени mta в двух и более рабочих скриптах,

DS> Скажем есть у нас postgres и mysql. Почему бы им обоим не provides
DS> sqlserver?

Но это будет работать только в том случае если последующие
программы юзают СУБД-незаивсимые интерфейсы...

А в алгоритм надо внести уточнение: скрипты с requires sqlserver
запускается только после того как отработают все скрипты,
которые provides sqlserver и хотя бы один из них будет успешным.

DS>  > В  "корневых"  S-скриптах  (т.е.  таких,  которые  не зависят от
DS>  > других) пишется
DS>  > # requires none
DS>  > чтобы  запускающему  скрипту  (rc-скрипту)  было понятно, что он
DS>  > (S-скрипт) удовлетворяет вышеописанным требованиям.

DS> А может вообще без параметров?

а как тогда дать управляющему скрипту понять, что он
удовлетворяет нашему RFC? ;)

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.

Этот алгоритм хорошо работает как и при первичном запуске, так и
последующей смене уровней.

DS>  > Описание  алгоритма  запуска (в т.ч. лимит на число одновременно
DS>  > запущенных скриптов) - Денису.

DS> Я, кажется, приводил его в одном из писем. Основная идея в том, что мы
ab просил все свести в один файл.

DS> строим дерево очерёдности запуска (не зависимости, а именно очерёдности),
DS> после чего выбираем все скрипты, которые можно запустить сразу, и создаём
DS> очередь на исполнения. Из этой очереди скрипты уже и запускаются. После
DS> завершения скрипта (или попытки его запуска) мы смотрим на наше дерево,
DS> убираем из него наш скрипт, и модифицируем само дерево в зависимости от
DS> результата его выполнения и типа связей этого узла с другими (requires или
DS> after), после чего те скрипты, которые стало возможно запустить,
DS> отправляем в очередь.
 
ОК. Теперь думай как его доработать для смены runlevel'а.

-- 
Best regards,
 ASA                            mailto:llb на udm.ru




Подробная информация о списке рассылки community