[Comm] Re:
Denis Smirnov
=?iso-8859-1?q?mithraen_=CE=C1_freesource=2Einfo?=
Сб Май 10 19:56:44 MSD 2003
On Sat, May 10, 2003 at 01:15:04PM +0500, ASA wrote:
> DS> В какой момент должен запускаться скрипт, если для него ничего не указано?
> DS> Считать его зависимых от всех предыдущих по номеру?
> Видимо, так.
> Кстати, в RH и Debian есть вехи. Что-то типа - после S20 поднята
> сеть, после S40 смонтированы все файловые системы.
Хорошо бы это сделать в виде групп. То есть в качестве зависимости можно
указывать не только сервис, но и имя группы, при этом каждый сервис может
входить в какие-либо группы. Логику это почти не усложнит (всё равно ведь
развернутся эти группы в зависимости от конкретных пакетов), зато жизнь
мейнтейнерам облегчит.
> DS> > seek test ;). Пример - в той же вынде выделите побольше иконок
> DS> > на рабочем столе и нажмите Enter ;) Поэтому можно ввести
> DS> > ограничение на одновременную работу не более 4*CPU скриптов враз.
> DS> Это конфигурируемо должно быть. По-умолчанию 4*CPU -- оптимум.
> Главное - не забыть об этом.
Угу. Хотя так как запускалка должна отслеживать результат выполнения
каждого скрипта, то для добавления ограничения по количеству работающих
процессов почти ничего писать не нужно.
> DS> > DS> > отдельно от других подобных ему. И тут может возникнуть
> DS> > DS> > нетривиальная задача развязки обязательных и необязательных
> DS> > DS> > зависимостей.
> DS> > DS> А в чём собственно её нетривиальность? Автор пакета должен суметь чётко
> DS> > DS> сформулировать что необходимо его сервису для работы.
> DS> > Нетривиальность вообще в создании такого дерева.
> DS> В смысле в создании дерева по меткам, или в проставлении меток
> DS> зависимости?
> Если скрипт 3 связан нежесткой зависимостью со скриптом 2,
> который не стартовал, потому что он жестко связан со скриптом 1,
> выдавшим FAILED.
То 3-й скрипт стартует.
Упрощённо алгоритм такой -- строится дерево. После этого создаётся список
узлов, у которых нет зависимостей. Из этого списка выбираются имена
скриптов для старта. После того, как скрипт завершит свою работу (с
каким-либо кодом завершения) смотрим на узел-родитель, и смотрим на тип
связи. В зависимости от результата выполнения скрипта, типа связи, наличия
других невыполненых зависимостей родителя либо ничего не делаем с
родителем, либо переносим его в список узлов готовых к выполнению. При
этом если FAILED скрипт, зависимость которого с родителем прямая, то
тогда родителю выставляется флаг FAILED, и, когда придёт время его
переноса в очередь для выполнения мы просто выдаём что он и не будет
выполняться.
> DS> Нужно чтобы всё работало даже для тех программ, которые об этой фиче не
> DS> знают. Если действительно сделать зависимостями по-умолчанию "все
> DS> предыдущие скрипты в списке", то действительно будет всё работать.
> Именно поэтому сами скрипты должни связываться реализоваться
> только через теги-комментарии а-ля chkconfig.
Согласен.
--
С уважением, Денис
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/20030510/dc0036b9/attachment-0004.bin>
Подробная информация о списке рассылки community