Предоставил 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) и and rc.subr(8).