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) используется для разбора этих комментариев во время старта системы для определения порядка, в котором должны вызываться системные сервисы в соответствии с зависимостями. В начало каждого стартового файла должны быть включены следующие строки:

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

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

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

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