Руководство FreeBSD
Пред. | Глава 11. Настройка и оптимизация | След.

# 11.7. Использование rc в FreeBSD 5.X

Предоставил Tom Rhodes.

В FreeBSD недавно была интегрирована из NetBSD система `rc.d`, используемая для старта системы. Многие из файлов в каталоге `/etc/rc.d` предназначены для основных сервисов, они могут управляться параметрами start, stop, и restart. Например, sshd(8) может быть перезапущен следующей командой:

    # /etc/rc.d/sshd restart

Эта процедура похожа для других сервисов. Конечно, сервисы обычно запускаются автоматически, как указано в rc.conf(5). Например, включение даемона Network Address Translation при запуске выполняется простым добавлением следующей строки в `/etc/rc.conf`:

    natd_enable="YES"

Если natd_enable="NO" уже присутствует, просто измените NO на YES. Скрипты rc автоматически загрузят все другие зависимые сервисы, как описано ниже.

Поскольку система `rc.d` в основном предназначена для запуска/отключения сервисов во время запуска/отключения системы, стандартные параметры start, stop и restart будут работать только если установлена соответствующая переменная в `/etc/rc.conf`. Например, команда выше `sshd restart` будет работать только если переменная sshd_enable в файле `/etc/rc.conf` установлена в YES. Для выполнения скриптов независимо от установок в `/etc/rc.conf`, параметры start, stop или restart необходимо задавать с префиксом ''force''. Например, для перезапуска `sshd` независимо от установок в `/etc/rc.conf`, выполните следующую команду:

    # /etc/rc.d/sshd forcerestart

Проверить состояние переменной в файле `/etc/rc.conf` легко: запустите соответствующий скрипт из `rc.d` с параметром rcvar. Проверка переменной для `sshd` выполняется следующей командой:

    # /etc/rc.d/sshd rcvar
    # sshd
    $sshd_enable=YES

> Замечание: Вторая строка (# sshd) это вывод команды `sshd`, а не консоль `root`.

Чтобы определить, запущен ли сервис, существует параметр status. Например для проверки того, запущен ли `sshd`, выполните:

    # /etc/rc.d/sshd status
    sshd is running as pid 433.

Возможна также перегрузка (reload) сервиса. Скрипт, запущенный с этим параметром, попытается отправить сервису сигнал, вызывающий перезагрузку файлов настройки. В большинстве случаев это означает отправку сервису сигнала SIGHUP.

Структура rcNG используется не только для сетевых серверов, она отвечает также за большую часть инициализации системы. Рассмотрим, к примеру, файл `bgfsck`. Во время выполнения этот скрипт выводит следующее сообщение:

    Starting background file system checks in 60 seconds.

Следовательно, этот файл используется для фоновой проверки файловых систем, которая выполняется только в процессе инициализации системы.

Функционирование многих сервисов системы зависит от корректной работы других сервисов. Например, NIS и другие основанные на RPC сервисы могут не запуститься, пока не загрузится `rpcbind` (portmapper). Для разрешения этой проблемы, в начале каждого скрипта в комментарии включаются информация о зависимостях и другие метаданные. Программа rcorder(8) используется для разбора этих комментариев во время старта системы для определения порядка, в котором должны вызываться системные сервисы в соответствии с зависимостями. В начало каждого стартового файла должны быть включены следующие строки:

- PROVIDE: Задает имя сервиса, предоставляемого этим файлом.

- REQUIRE: Список сервисов, необходимых этому сервису. Этот файл будет запущен после указанных сервисов.

- BEFORE: Список сервисов, зависящих от этого сервиса. Этот файл будет запущен до указанных сервисов.

- KEYWORD: FreeBSD или NetBSD. Используется для функций, зависящих от версии *BSD.

Используя этот метод, администратор может легко контролировать системные сервисы без использования ''уровней запуска'', как в некоторых других операционных системах UNIX®.

Дополнительную информацию о системе `rc.d` FreeBSD 5.X можно найти на страницах справочника rc(8) и rc.subr(8).

Пред. | Начало | След.
Настройка утилиты `cron` | Уровень выше | Настройка карт сетевых интерфейсов

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.