Обычно в системе работает множество сервисов. Их можно запустить различными способами,
каждый из которых имеет свои преимущества.
Программное обеспечение, установленное из коллекции портов или пакетов обычно
записывает свои скрипты в /usr/local/etc/rc.d который
выполняется с аргументом start при запуске и с аргументом stop при завершении работы системы. Этот метод запуска
рекомендуется, если вы запускаете сервисы как root, или же они
должны быть запущены с привилегиями root. Эти скрипты
устанавливаются вместе с пакетами, и соответственно, при удалении пакетов скрипты будут
также удалены.
Типичный скрипт из /usr/local/etc/rc.d, выполняющийся при
запуске выглядит следующим образом:
#!/bin/sh
echo -n ' FooBar'
case "$1" in
start)
/usr/local/bin/foobar
;;
stop)
kill -9 `cat /var/run/foobar.pid`
;;
*)
echo "Usage: `basename $0` {start|stop}" >&2
exit 64
;;
esac
exit 0
Стартовые скрипты FreeBSD ищут в каталоге /usr/local/etc/rc.d скрипты с расширением .sh, исполняемые пользователем root.
Обнаруженные скрипты выполняются с с параметром start при
старте системы и с параметром stop при завершении работы
системы. Поэтому если вы хотите использовать пример скрипта выше и запускать его во время
старта системы, сохраните его в каталоге /usr/local/etc/rc.d с
именем FooBar.sh и убедитесь, что он исполняемый. Вы можете
сделать скрипт исполняемым с помощью chmod(1), как показано
ниже:
# chmod 755 FooBar.sh
Некоторые сервисы должны быть запущены inetd(8) при установке
соединения с определённым портом. Это может понадобиться, например, для почтовых серверов
(POP, IMAP, и т.д.). Для этого нужно отредактировать файл /etc/inetd.conf. Подробнее о работе с этим файлом вы можете
прочитать в inetd(8).
Некоторые дополнительные системные сервисы могут быть не учтены в файле /etc/rc.conf. Тогда для их запуска нужно прописать соответствующую
команду в /etc/rc.local. Во FreeBSD 3.1 не предусмотрен
/etc/rc.local; но считается признаком хорошего тона создание
этого файла администратором. Заметьте, что rc.local
используется для запуска сервисов только в крайнем случае. Если есть лучший способ
запустить сервис, используйте его.
Замечание: Не записывайте
свои команды в /etc/rc.conf. Для запуска демонов, или для
выполнения вашей команды во время запуска - запишите ваш скрипт в /usr/local/etc/rc.d.
Также допускается использование cron(8) для запуска
системных сервисов. Этот метод обладает рядом преимуществ, которые заключаются не только
в том, что cron(8) запускает эти
процессы, как владелец crontab, но и в том, что сервисы могут
быть запущены и не привилегированными пользователями.
Очень удобно пользоваться возможностью cron(8), которая
заключается в том, что если вместо времени указать @reboot,
запланированная программа будет запущена сразу после запуска cron(8) после
перезагрузки системы.