ALT Linux Community general discussions
 help / color / mirror / Atom feed
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 --]

  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