Lines 9-16
Link Here
|
9 |
|
9 |
|
10 |
<sections> |
10 |
<sections> |
11 |
|
11 |
|
12 |
<version>1.21</version> |
12 |
<abstract> |
13 |
<date>2005-05-29</date> |
13 |
В Gentoo используется специальный формат сценариев запуска, который, вкупе с |
|
|
14 |
другими возможностями, позволяет устанавливать зависимости и виртуальные уровни |
15 |
запуска. В этой главе описываются все эти аспекты и пример управления подобными |
16 |
сценариями. |
17 |
</abstract> |
18 |
|
19 |
<version>1.23</version> |
20 |
<date>2007-03-07</date> |
14 |
|
21 |
|
15 |
<section> |
22 |
<section> |
16 |
<title>Уровни запуска</title> |
23 |
<title>Уровни запуска</title> |
Lines 92-99
Link Here
|
92 |
|
99 |
|
93 |
<p> |
100 |
<p> |
94 |
Если вы запомнили последовательность загрузки, описанную чуть ранее, вы |
101 |
Если вы запомнили последовательность загрузки, описанную чуть ранее, вы |
95 |
вспомните, что первое действие <c>init</c> — это монтирование всех файловых |
102 |
вспомните, что первое действие <c>init</c> — это монтирование всех |
96 |
систем. Это определяется в строке <path>/etc/inittab</path>, приведенной ниже: |
103 |
файловых систем. Это определяется в строке <path>/etc/inittab</path>, |
|
|
104 |
приведенной ниже: |
97 |
</p> |
105 |
</p> |
98 |
|
106 |
|
99 |
<pre caption="Строка инициализации системы из /etc/inittab"> |
107 |
<pre caption="Строка инициализации системы из /etc/inittab"> |
Lines 549-554
Link Here
|
549 |
} |
557 |
} |
550 |
</pre> |
558 |
</pre> |
551 |
|
559 |
|
|
|
560 |
<p> |
561 |
Если ваш сервис должен иметь возможность записи на локальный диск, то ему |
562 |
необходим <c>localmount</c>. Если они помещает что-либо в <path>/var/run</path>, |
563 |
например pidfile, то он должен стартовать после <c>bootmisc</c>: |
564 |
</p> |
565 |
|
566 |
<pre caption="Пример функции depend()"> |
567 |
depend() { |
568 |
need localmount |
569 |
after bootmisc |
570 |
} |
571 |
</pre> |
572 |
|
552 |
</body> |
573 |
</body> |
553 |
</subsection> |
574 |
</subsection> |
554 |
<subsection> |
575 |
<subsection> |
Lines 565-596
Link Here
|
565 |
<pre caption="Пример функции start()"> |
586 |
<pre caption="Пример функции start()"> |
566 |
start() { |
587 |
start() { |
567 |
ebegin "Запуск - моя_служба" |
588 |
ebegin "Запуск - моя_служба" |
568 |
start-stop-daemon --start --quiet --exec /path/to/my_service |
589 |
start-stop-daemon --start --quiet --exec /path/to/my_service \ |
|
|
590 |
--pidfile /path/to/my_pidfile |
569 |
eend $? |
591 |
eend $? |
570 |
} |
592 |
} |
571 |
</pre> |
593 |
</pre> |
572 |
|
594 |
|
573 |
<p> |
595 |
<p> |
574 |
Если вам нужны дополнительные примеры функции <c>start()</c>, пожалуйста, |
596 |
И <c>--exec</c>, и <c>--pidfile</c> должны быть использованы в функциях старта |
575 |
прочитайте исходные коды сценариев инициализации, находящихся в каталоге |
597 |
и останова. Если сервис не создает pidfile, то используйте, по возможности, |
576 |
<path>/etc/init.d</path>. Что касается команды <c>start-stop-daemon</c>, то |
598 |
<c>--make-pidfile</c>, однако вам потребуется это проверить. Иначе не |
577 |
на случай, если вам нужны дополнительные сведения, есть превосходная |
599 |
используйте pidfile. Также вы можете добавить <c>--quiet</c> к параметрам |
578 |
страница справки: |
600 |
<c>start-stop-daemon</c>, но это не рекомендуется, если только сервис не |
|
|
601 |
максимально проверен. Использование <c>--quiet</c> может скрыть отладочную |
602 |
информацию в случае, если сервис не стартует нормально. |
579 |
</p> |
603 |
</p> |
580 |
|
604 |
|
581 |
<pre caption="Вызов страницы справки по start-stop-daemon"> |
605 |
<note> |
582 |
# <i>man start-stop-daemon</i> |
606 |
Проверьте, что <c>--exec</c> на самом деле запускает сервис, а не сценарий |
583 |
</pre> |
607 |
оболочки, который запускает сервисы и завершается — эту работу должен |
|
|
608 |
делать сам сценарий запуска. |
609 |
</note> |
610 |
|
611 |
<p> |
612 |
Если вам нужны примеры функции <c>start()</c>, обратитесь к исходному коду |
613 |
доступных в каталоге <path>/etc/init.d</path> сценариев. |
614 |
</p> |
584 |
|
615 |
|
585 |
<p> |
616 |
<p> |
586 |
Другими функциями, которые можно определить — <c>stop()</c> и |
617 |
Другими функциями, которые можно определить — <c>stop()</c> и |
587 |
<c>restart()</c>. От вас не требуется определение этих функций! Система |
618 |
<c>restart()</c>. Вам нет нужды определять эти функции! Система |
588 |
инициализации, применяемая нами, достаточно развита и в состоянии |
619 |
инициализации, применяемая нами, достаточно развита и в состоянии |
589 |
самостоятельно заполнить эти функции, если вы используете |
620 |
самостоятельно заполнить эти функции, если вы используете |
590 |
<c>start-stop-daemon</c>. |
621 |
<c>start-stop-daemon</c>. |
591 |
</p> |
622 |
</p> |
592 |
|
623 |
|
593 |
<p> |
624 |
<p> |
|
|
625 |
Хотя вам <e>не нужно</e> создавать функцию <c>stop()</c>, вот ее пример: |
626 |
</p> |
627 |
|
628 |
<pre caption="Пример функции stop()"> |
629 |
stop() { |
630 |
ebegin "Stopping my_service" |
631 |
start-stop-daemon --stop --exec /path/to/my_service \ |
632 |
--pidfile /path/to/my_pidfile |
633 |
eend $? |
634 |
} |
635 |
</pre> |
636 |
|
637 |
<p> |
638 |
Если ваш сервис запускает другой сценарий (например, bash, python или perl), а |
639 |
затем меняет свое имя (например, <c>foo.py</c> на <c>foo</c>), то вам нужно |
640 |
добавить <c>--name</c> к <c>start-stop-daemon</c>. Вы должны указать имя, |
641 |
которое будет использоваться в будущем. В данном примере, сервис запускается |
642 |
с именем <c>foo.py</c>, которое затем сменяется на <c>foo</c>: |
643 |
</p> |
644 |
|
645 |
<pre caption="Сервис, запускающий сценарий foo"> |
646 |
start() { |
647 |
ebegin "Starting my_script" |
648 |
start-stop-daemon --start --exec /path/to/my_script \ |
649 |
--pidfile /path/to/my_pidfile --name foo |
650 |
eend $? |
651 |
} |
652 |
</pre> |
653 |
|
654 |
<p> |
655 |
Если вам нужны дополнительные сведения, то у команды <c>start-stop-daemon</c> |
656 |
есть превосходная страница справки: |
657 |
</p> |
658 |
|
659 |
<pre caption="Вызов страницы справки по start-stop-daemon"> |
660 |
# <i>man start-stop-daemon</i> |
661 |
</pre> |
662 |
|
663 |
<p> |
594 |
Синтаксис сценариев инициализации, применяемых в Gentoo, основан на |
664 |
Синтаксис сценариев инициализации, применяемых в Gentoo, основан на |
595 |
оболочке Борна (Bourne Again Shell — bash), поэтому вы можете свободно |
665 |
оболочке Борна (Bourne Again Shell — bash), поэтому вы можете свободно |
596 |
использовать внутри своих сценариев bash-совместимые конструкции. |
666 |
использовать внутри своих сценариев bash-совместимые конструкции. |
Lines 703-708
Link Here
|
703 |
</pre> |
773 |
</pre> |
704 |
|
774 |
|
705 |
<p> |
775 |
<p> |
|
|
776 |
Хотя <c>net.eth0</c> удалена из уровня запуска offline, <c>udev</c> все еще |
777 |
будет пытаться запускать любые устройства, которые обнаружит в системе, и |
778 |
стартовать подходящие сервисы. Поэтому добавьте сетевой сервис, запуск |
779 |
которого вы хотите предотвратить (как и для любого сервиса, который может |
780 |
запускать udev при обнаружении устройства) в <path>/etc/conf.d/rc</path>, как |
781 |
показано ниже. |
782 |
</p> |
783 |
|
784 |
<pre caption="Отключение инициальизации сервисов по устройствам в /etc/conf.d/rc"> |
785 |
RC_COLDPLUG="yes" |
786 |
<comment>(Ниже укажите сервисы, которые не должны запускаться автоматически)</comment> |
787 |
RC_PLUG_SERVICES="!net.eth0" |
788 |
</pre> |
789 |
|
790 |
<note> |
791 |
Для большей информации о инициализации сервисов по устройствам читайте |
792 |
комментарии внутри <path>/etc/conf.d/rc</path>. |
793 |
</note> |
794 |
|
795 |
<p> |
706 |
Теперь необходимо отредактировать конфигурацию загрузчика, добавив запись об |
796 |
Теперь необходимо отредактировать конфигурацию загрузчика, добавив запись об |
707 |
уровне <c>offline</c>. Например, в файле <path>/boot/grub/grub.conf</path>: |
797 |
уровне <c>offline</c>. Например, в файле <path>/boot/grub/grub.conf</path>: |
708 |
</p> |
798 |
</p> |
Lines 737-747
Link Here
|
737 |
|
827 |
|
738 |
<!-- *$Localization: |
828 |
<!-- *$Localization: |
739 |
target-language: Russian |
829 |
target-language: Russian |
740 |
target-version: 1.21-r4 |
830 |
target-version: 1.23-r1 |
741 |
target-date: 2006-03-24 |
831 |
target-date: 2007-05-06 |
742 |
source-cvs-revision: 1.25 |
832 |
source-cvs-revision: 1.29 |
743 |
translated-by: Vasiliy Golubev [vas@nightmail.ru] |
833 |
translated-by: Vasiliy Golubev [vas@nightmail.ru] |
744 |
edited-by: Sergey Kuleshov; Alexey Chumakov [achumakov@gentoo.org] |
834 |
edited-by: Sergey Kuleshov; Alexey Chumakov [achumakov@gentoo.org] |
745 |
|
835 |
Azamat Hackimov <azamat.hackimov@gmail.com> |
746 |
note: |
836 |
note: |
747 |
--> |
837 |
--> |