Во 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/.