From: Denis Smirnov <mithraen@freesource.info> To: community@altlinux.ru Subject: [Comm] Re: [Comm] Date: Tue, 13 May 2003 17:30:16 +0400 Message-ID: <20030513133016.GC2421@localhost.localdomain> (raw) In-Reply-To: <1188331299.20030512092916@udm.ru> [-- Attachment #1: Type: text/plain, Size: 4693 bytes --] On Mon, May 12, 2003 at 09:29:16AM +0500, ASA wrote: > 2) сэкономить время запуска компьютера за счет параллельного > выполнения нескольких сркиптов (главная цель по мнению > Дениса). Это не главная цель, это цель, ради достижения которой я вообще и подумал в первый раз о необходимости сделать подобную систему. Для многих зависимости скриптов друг от дурга гораздо более полезная фича. > Поле requires может встречаться (если вообще есть) один или > несколько раз и описывает т.н. жесткую зависимость скрипта от > успешного запуска других скриптов. Параметры requires > складываются по правилу AND, несколько requires OR'ятся. Приведёшь пример, где это действительно нужно (я про OR)? > Поле after может встречаться (если вообще есть) один или > несколько раз и описывает т.н. мягкую зависимость скрипта, то > есть указывает, после _просмотра_ или _попытки запуска_ какого > скрипта он должен запускаться Параметры after складываются по > правилу AND, несколько requires OR'ятся Может "просмотра" заменить на "попытку поиска"? > Если какое-то after-имя не встречается в других скриптах (имя > скрипта или поле provides), то он считается не запущенным. Эту фразу, честно говоря, я при первой прочтении даже не заметил :( > Поле provides встречается только один раз, и обеспечивает > альтернативное имя скрипта, которое может быть использовано в > полях requires и after. Полезно для случаев, когда могут быть > разные скрипты, обеспечивающие один и тот же сервис, например, в > системе могут быть установлены либо sendmail, либо exim, либо > postfix. Для всех них в скрипт пишется: > # provides mta Это _не_ альтернативное имя. Это именно 'provides'. То есть сервисы, которые предоставляются этим скриптом. Аналогично тому, как это может быть в RPM. Я бы даже разделил пространства имён пакетов и provides (добавив какой-нибудь символ в начало имён последних). Смысл у них ведь совершенно разный. Одно дело "мне нужен postfix", а другое дело "мне нужно некое средство доставки почты". > Допускается задание нескольких имен в одном provides, но сама > строка provides должна быть одна (если она вообще есть), А оно надо, это ограничение? IMHO если можно указывать несколько в одной строке, то разбор не сильно усложнится от того, что этих строк может быть больше. А иметь их больше позволит комментировать каждую. > а сами > имена не должны больше нигде повторяться (то есть не допускается > одновременное задание имени mta в двух и более рабочих скриптах, Скажем есть у нас postgres и mysql. Почему бы им обоим не provides sqlserver? > также не допускается совпадение имени какого-либо скрипта и > содержимого provides). Лучше разделить пространства имён. > Само имя скрипта (после отбрасывания начального SXX, и, при > необходимости, конечного .*sh) работает как неявный provides. Сложно отследить это будет, ой как сложно. А вот взбредёт кому-нибудь сделать скрипт mta, а он не знает что он уже где-то используется в качестве provides. Лучше делить пространства имён скриптов, и имён предоставляемых ими сервисов. > В "корневых" S-скриптах (т.е. таких, которые не зависят от > других) пишется > # requires none > чтобы запускающему скрипту (rc-скрипту) было понятно, что он > (S-скрипт) удовлетворяет вышеописанным требованиям. А может вообще без параметров? > Если в S-скрипте нет ни одного из всех трех полей (requires, > after, provides), то он считается не удовлетворяющим > вышеприведенным правилам, и rc-скрипт неявно задает для него > поле after, содержащее все скрипты, имеющие меньший запускной > номер, например, если мы имеем S25blabla без наших полей, то для > него будет неявно указано, что в after прописаны все скрипты от > S00 до S24. > Проблемы: переход на другой runlevel, в том числе останов? Каков сейчас алгоритм перехода на другой runlevel? Я не до конца себе его представляю. > Описание алгоритма запуска (в т.ч. лимит на число одновременно > запущенных скриптов) - Денису. Я, кажется, приводил его в одном из писем. Основная идея в том, что мы строим дерево очерёдности запуска (не зависимости, а именно очерёдности), после чего выбираем все скрипты, которые можно запустить сразу, и создаём очередь на исполнения. Из этой очереди скрипты уже и запускаются. После завершения скрипта (или попытки его запуска) мы смотрим на наше дерево, убираем из него наш скрипт, и модифицируем само дерево в зависимости от результата его выполнения и типа связей этого узла с другими (requires или after), после чего те скрипты, которые стало возможно запустить, отправляем в очередь. -- С уважением, Денис http://freesource.info [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2003-05-13 13:30 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2003-05-12 4:29 [Comm] RFC на модификацию SysV startup ASA 2003-05-13 13:30 ` Denis Smirnov [this message] 2003-05-13 16:38 ` [Comm] Re: [Comm] ASA 2003-05-13 20:37 ` Denis Smirnov 2003-05-14 3:20 ` Re[2]: " ASA 2003-05-14 8:49 ` Denis Smirnov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20030513133016.GC2421@localhost.localdomain \ --to=mithraen@freesource.info \ --cc=community@altlinux.ru \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Community general discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 community community/ http://lore.altlinux.org/community \ mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com public-inbox-index community Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.community AGPL code for this site: git clone https://public-inbox.org/public-inbox.git