|
FreeBSD: Выполнение Скрипта перед Запуском Дэмона/Сервиса
|
|||
---|---|---|---|
#18+
Благоприятной Кармы Всем, читающим этот Вопрос! Подскажите, пожалуйста, Знающие Админы, как осуществить Subj при НижеОписанных Условиях. Задача следующая: Запускается некий Дэмон, для Примера, назовём Его «hostapd». Непосредственно перед самым Запуском (Точнее только на: start, restart и reload) хочу выполнять Свой Скриптик, который призван подрихтовать некий Конфиг, назовём Его, к примеру, «/etc/hostapd.conf». Осуществить Запуск необходимо из «/etc/rc.conf», не перекорячивая при этом «/etc/rc.d/hostapd» или какие-либо другие Файлы из «/etc/*». Естественно, «/etc/rc.conf» и «/etc/hostapd.conf» будут изменены, но Они «не входят» в Поставку FreeBSD и Их редактирование не вызывает распухания Камасутры при выполнении «make installworld». В Документации и Статьях по Системе «rc.d» в основном описывается Процесс создания Собственного Дэмона, но в данном случае Задача стоит другая: Приколхозить Свой Скрипт на ЗаПуск/ПереЗаПуск уже существующего. Собственно, сам Вопрос состоит в том, как докопаться до Переменных, вроде «start_precmd», «reload_precmd» и «restart_precmd» из Конфигурационного Файла «/etc/rc.conf», не изменяя другие Файлы? Или Я что-то НеДоПонимаю? Пока сделал так «/etc/rc.conf»: Код: sql 1. 2.
Но осознаю, что Это Решение в Корне неправильное и жутко костыльное. Покопавшись во Фряшных Скриптах, обнаружил, что «/etc/rc.conf» может подцепляться везде и всюду, т.е. Мой Скрипт будет выполняться десятки раз впустую. Скрипт оптимизировал, конечно, но это всё равно не Решение. Также была осуществлена попытка добавления в Конфиг «/etc/hostapd.conf» Динамических Параметров вида: Код: sql 1.
Но Это не сработало вообще. Видимо, «/etc/hostapd.conf» читается как «Обычный Файл Настроек "Param=Value"» и не прогоняется через SH (Может туда Шебанг надо было запихнуть?). Заранее Благодарю Всех Откликнувшихся! P.S. НеОбХодимость периодического «make installworld» и НеТрогания «/etc/*» — Вопрос Риторический и Тема для Жирного ХолиВара, который не хотелось бы разворачивать здесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2019, 14:44 |
|
FreeBSD: Выполнение Скрипта перед Запуском Дэмона/Сервиса
|
|||
---|---|---|---|
#18+
Ваш скрипт, который надо выполнить перед n-ным демоном , оформите как запускающий скрипт вашего демона, и пропишите его в секции require того демона, который надо запустить после него. Например, мне надо монтировать пулы с разными именами в разные точки монтирования в систему и если система перестартовала, то он должен быть смонтирован... Поэтому у меня скрипт стартует в виде демона ZZ после запуска сети и системы авторизации, т.е. в rc.conf вставляем zz_enable="YES" zz_pool="имя пула" zz_mount="точка монтирования" поскольку скрипт не системный, то кладем его в /usr/local/etc/rc.d/ #!/bin/sh # PROVIDE: ZZ # REQUIRE: LOGIN NETWORKING SERVERS # KEYWORD: shutdown . /etc/rc.subr name="zz" rcvar=`set_rcvar` : ${zz_enable="NO"} pidfile="/var/run/${name}.pid" start_cmd() { zpool_name=${zz_pool} mount_point=${zz_mount} /sbin/zpool import -o altroot=$mount_point/$zpool_name $zpool_name echo Mount $zpool_name "in " $mount_point/$zpool_name } stop_cmd() { zpool_name=${zz_pool} /sbin/zpool export $zpool_name echo Unmount $zpool_name } status_cmd() { } start_cmd="start_cmd" stop_cmd="stop_cmd" status_cmd="status_cmd" load_rc_config $name run_rc_command "$1" ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2019, 23:42 |
|
FreeBSD: Выполнение Скрипта перед Запуском Дэмона/Сервиса
|
|||
---|---|---|---|
#18+
Sergey Orlov…и пропишите его в секции require того демона, который надо запустить после него.…Я не хочу менять «/etc/rc.d/hostapd», дабы не схватить НеПриятностей при ОбНовлении («make installworld») или ПереЕзде/ПереУстановке на Другой Сервак. Похоже, всё-таки придётся писать Своего Дэмона в «/usr/local/etc/rc.d/» и в конце через Точку «.» подцепить уже Существующий из «/etc/rc.d/», только вижу, что придётся копировать Комменты типа: Код: php 1. 2. 3.
, иначе «find_local_scripts_new()» из «/etc/rc.subr» не воспримет Скрипт за Дэмона. Возможно, надо копировать ещё что-то. Sergey Orlov Код: php 1. 2. 3.
А разве тут не должно быть что-то типа «/usr/local/bin/zfs-stats -M -A»? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2019, 01:59 |
|
|
start [/forum/topic.php?fid=25&fpage=6&tid=1481102]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 168ms |
0 / 0 |