Руководство 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`. Следует помнить, что эту функцию поддерживают не все сервисы.

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

    Starting background file system checks in 60 seconds.

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

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

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

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

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

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

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

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

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

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