Многие пользователи предпочитают устанавливать программы сторонних производителей в FreeBSD из набора портов. В подобных случаях может потребоваться сконфигурировать программы так, чтобы они запускались при инициализации системы. Сервисы, такие как mail/postfix или www/apache13, - это лишь два примера множества программных пакетов, которые можно запускать при инициализации системы. В этом разделе описывается процедура, предназначенная для запуска программ сторонних разработчиков.
Большинство входящих в FreeBSD сервисов, таких как cron(8), запускается с помощью стартовых скриптов системы. Эти скрипты могут различаться в зависимости от версии FreeBSD или ее производителя; однако важнее всего учитывать, что их начальную конфигурацию можно задать с помощью простых стартовых скриптов.
До появления rc.d
приложения должны были помещать
простой стартовый скрипт в
каталог /usr/local/etc/rc.d
,
который затем читался скриптами инициализации системы. Эти скрипты
затем выполнялись в ходе последующих стадий запуска системы.
Хотя много разработчиков потратили часы на попытки внедрить
старый стиль конфигурирования в новую систему, остаётся фактом,
что для некоторых утилит сторонних производителей по-прежнему
необходим скрипт, помещённый в указанный выше каталог. Незначительные
различия в скриптах зависят от того, используется ли rc.d
. До
версии FreeBSD 5.1 использовались скрипты в старом стиле,
и почти во всех случаях скрипты в новом стиле должны подойти так же
хорошо.
Хотя каждый скрипт должен соответствовать некоторым минимальным
требованиям, в большинстве случаев эти требования не зависят от версии
FreeBSD. Каждый скрипт должен иметь в конце расширение
.sh
и каждый скрипт должен быть выполняемым.
Последнее требование может быть выполнено путем установки командой
chmod
уникальных прав доступа
755
. Также, как минимум, должна быть опция
start
для запуска приложения и опция
stop
для его остановки.
Простейший стартовый скрипт, пожалуй, будет похож на следующий:
#!/bin/sh echo -n ' utility' case "$1" in start) /usr/local/bin/utility ;; stop) kill -9 `cat /var/run/utility.pid` ;; *) echo "Usage: `basename $0` {start|stop}" >&2 exit 64 ;; esac exit 0
Этот скрипт поддерживает опции stop
и
start
для приложения, которое мы здесь называем
просто - utility
.
А можно запускать его и вручную, с помощью команды:
#
/usr/local/etc/rc.d/utility.sh start
Хотя и не все программы сторонних производителей требуют
добавления строки в файл rc.conf
, практически
каждый день очередной новый порт меняется так, чтобы поддерживать
подобную конфигурацию. Поищите в результатах, выдаваемых после
установки более детальную информацию по конкретному приложению.
Некоторые программы сторонних производителей будут включать стартовые
скрипты, позволяющие использовать приложение с rc.d
; но это мы еще
обсудим в следующем разделе.
Теперь, когда FreeBSD включает rc.d
, конфигурирование запуска
приложений стало более оптимальным; фактически, оно стало более
тщательным. С помощью ключевых слов, рассмотренных в разделе
rc.d, приложения теперь
можно настроить для запуска после других заданных сервисов,
например, DNS; можно разрешить передачу
дополнительных флагов через rc.conf
вместо
жесткого задания флагов в стартовых скриптах, и т.д. Простой
скрипт может иметь следующий вид:
#!/bin/sh # # PROVIDE: utility # REQUIRE: DAEMON # KEYWORD: shutdown . /etc/rc.subr name=utility rcvar=utility_pidfile command="/usr/local/sbin/utility" load_rc_config $name # # НЕ МЕНЯЙТЕ ЗДЕСЬ ЭТИ СТАНДАРТНЫЕ ЗНАЧЕНИЯ # ЗАДАВАЙТЕ ИХ В ФАЙЛЕ /etc/rc.conf # utility_enable=${utility_enable-"NO"} pidfile=${utility_pidfile-"/var/run/utility.pid"} run_rc_command "$1"
Этот скрипт будет гарантировать, что указанное приложение
utility будет запущено после сервиса
daemon
. Он также предоставляет метод
для создания и отслеживания файла идентификатора процесса,
PID.
Для этого приложения затем можно поместить следующую
строку в файл /etc/rc.conf
:
utility_enable="YES"
Этот новый метод также позволяет легко работать с аргументами
командной строки, включать стандартные функции из файла
/etc/rc.subr
, обеспечивает совместимость
с утилитой rcorder(8) и упрощает конфигурирование с помощью
файла rc.conf
.
Другие сервисы, такие как даемоны сервера
POP3, IMAP, и т.п. могут
быть запущены с помощью inetd(8). Для этого необходимо
установить сервисную утилиту из набора портов и добавить
соответствующую строчку конфигурации в файл
/etc/inetd.conf
или раскомментировать
подходящую строку конфигурации из уже имеющихся. Работа с даемоном
inetd и его конфигурирование подробно описаны
в разделе inetd.
В некоторых случаях использование для запуска системных
служб даемона cron(8) может оказаться более приемлемым. Этот
подход имеет несколько преимуществ, поскольку даемон
cron
запускает эти процессы от имени
владельца файла crontab
. Это позволяет
обычным пользователям запускать и поддерживать некоторые
приложения.
Утилита cron
поддерживает уникальную
возможность, @reboot
, - это значение
можно использовать вместо спецификации времени. В результате,
задание будет выполнено при запуске cron(8), обычно -
в ходе инициализации системы.
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.