Назад | Перейти на главную страницу

Как изменить порядок запуска rc.d во FreeBSD?

Мой вопрос точно такой же, как этот вопрос кроме хочу поменять сервисы во FreeBSD.

Я провел небольшое исследование и нашел команду rcorder, которая предоставляет полный порядок услуг с указанными ниже параметрами.

rcorder /etc/rc.d/* /usr/local/etc/rc.d/*

Кроме того, я могу добавить опцию REQUIRE к любому сценарию rc.d, чтобы запустить мою службу перед ним. Мне это не понравилось, потому что я не хочу менять rc.d скрипты других программ. Есть ли более правильный способ сделать это?

Спасибо...

Порядок запуска rc определяется rcorder, как вы уже определили.

Этот процесс определения порядка запуска является автоматическим, и страница руководства для rcorder относительно не требует пояснений, но вы можете потратить некоторое время на просмотр Практические сценарии rc.d, а rc страница руководства прежде чем вносить какие-либо изменения.


В вашем конкретном случае вы можете сообщить rcorder, что ваш скрипт предпочитает запускать BEFORE: другие скрипты (с использованием BEFORE ключевое слово), но это следует делать только по уважительной причине и в определенных пределах.
Из статьи «Практический сценарий rc.d»:

Примечание. Не следует злоупотреблять строкой BEFORE: для обхода неполного списка зависимостей в другом скрипте. Подходящий случай для использования BEFORE: - это когда другой скрипт не заботится о нашем, но наш скрипт может лучше выполнять свою задачу, если запускается до другого. Типичный пример из реальной жизни - сетевые интерфейсы и брандмауэр: хотя интерфейсы не зависят от брандмауэра при выполнении своей работы, безопасность системы выиграет от того, что брандмауэр будет готов до того, как появится сетевой трафик.

И дополнительно

Имейте в виду, что указание имени службы в строке REQUIRE: не гарантирует, что служба действительно будет запущена к моменту запуска нашего скрипта. Требуемая служба может не запуститься или просто отключена в rc.conf (5). Очевидно, что rcorder (8) не может отслеживать такие детали, и rc (8) не будет этого делать. Следовательно, приложение, запущенное нашим скриптом, должно уметь справляться с недоступностью любых необходимых сервисов.

Конечно, исправлять существующие скрипты - плохая идея, они будут перезаписаны после обновления. Вы можете создать другой сценарий, который ничего не делает, но содержит ключевые слова REQUIRE и BEFORE, таким образом он поменяет порядок двух других сценариев.