Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 178112 | Differences between
and this patch

Collapse All | Expand All

(-)hb-working-rcscripts.xml (-18 / +108 lines)
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> &mdash; это монтирование всех файловых
102
вспомните, что первое действие <c>init</c> &mdash; это монтирование всех
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
оболочки, который запускает сервисы и завершается &mdash; эту работу должен
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
Другими функциями, которые можно определить &mdash; <c>stop()</c> и
617
Другими функциями, которые можно определить &mdash; <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 &mdash; bash), поэтому вы можете свободно
665
оболочке Борна (Bourne Again Shell &mdash; 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
-->

Return to bug 178112