Различия
Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
unix:doc:bin:bq-runat [2016/10/27 23:23] kos создано |
unix:doc:bin:bq-runat [2016/11/17 20:34] (текущий) kos [BQRunAt - функционал bq.sh для запуска внешних команд при старте/останове брокера БД] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== BQRunAt - функционал bq.sh для запуска внешних команд при старте/останове брокера БД ====== | ====== BQRunAt - функционал bq.sh для запуска внешних команд при старте/останове брокера БД ====== | ||
- | Версия: bq.sh ver. 4.6.2 | + | Версия: bq.sh ver. 4.6.2 \\ |
- | TT#: ??? | + | TT#: 0139423, 0291009 |
===== Назначение ===== | ===== Назначение ===== | ||
Обеспечение возможности запуска настраиваемых shell-команд в привязке к событиям старта и останова брокера БД. | Обеспечение возможности запуска настраиваемых shell-команд в привязке к событиям старта и останова брокера БД. | ||
- | Предусмотрено до пяти команд, выполняющихся непосредственно перед моментом запуска брокера, столько же после успешного запуска и такое же количество команд, выполняющихся до и после останова брокера. | + | Предусмотрено до пяти команд в каждом из перечисленных временных отрезков: |
+ | * непосредственно перед моментом запуска брокера БД (proserve) | ||
+ | * после успешного запуска брокера БД | ||
+ | * непосредственно перед командой останова брокера базы (proshut) | ||
+ | * после останова базы | ||
===== Синтаксис ===== | ===== Синтаксис ===== | ||
Строка 14: | Строка 18: | ||
Предусмотрены следующие переменные: | Предусмотрены следующие переменные: | ||
- | ==== Включение функционала BQRunAt ==== | + | === Включение функционала BQRunAt === |
<code bash> | <code bash> | ||
- | BQRunAtEnabled=yes # включение функционала BQRunAt | + | BQRunAtEnabled=yes # включение функционала BQRunAt |
</code> | </code> | ||
- | ==== Управление запуском ==== | + | === Управление запуском === |
<code bash> | <code bash> | ||
- | BQRunAtStart{05,04,03,02,01}=<команда/скрипт shell> # ПЕРЕД стартом | + | BQRunAtStart{05|04|03|02|01}='команда или скрипт' # ПЕРЕД стартом |
- | BQRunAtStart{1,2,3,4,5}=<команда/скрипт shell> # ПОСЛЕ старта | + | BQRunAtStart{1|2|3|4|5}='команда или скрипт' # ПОСЛЕ старта |
- | BQRunAtStop{5,4,3,2,1}=<команда/скрипт shell> # ПЕРЕД остановом | + | BQRunAtStop{5|4|3|2|1}='команда или скрипт' # ПЕРЕД остановом |
- | BQRunAtStop{01,02,03,04,05}=<команда/скрипт shell> # ПОСЛЕ останова | + | BQRunAtStop{01|02|03|04|05}='команда или скрипт' # ПОСЛЕ останова |
</code> | </code> | ||
- | ==== Управление полномочиями ==== | + | === Управление полномочиями === |
<code bash> | <code bash> | ||
- | BQRunAtUUser={<unix-user>,.} # unix-user для выполнения всех команд BQRunAt | + | BQRunAtUUser={<unix-user>|.} # unix-user для выполнения всех команд BQRunAt |
- | «bis» - значение по умолчанию | + | bis - значение по умолчанию |
- | «.» - текущий пользователь (под которым выполняется bq.sh в данный момент) | + | . - текущий пользователь (под которым выполняется bq.sh в данный момент) |
+ | |||
+ | BQRunAtStart<NN>UUser={<unix-user>|.} | ||
+ | # unix-user для выполнения конкретной команды BQRunAtStart<NN> | ||
- | BQRunAt{Start|Stop}<NN>UUser={<unix-user>,.} | + | BQRunAtStop<NN>UUser={<unix-user>|.} |
- | # unix-user для выполнения конкретной команды BQRunAt{Start|Stop}<<NN> | + | # unix-user для выполнения конкретной команды BQRunAtStop<NN> |
</code> | </code> | ||
- | ==== Управление сообщениями ==== | + | === Управление сообщениями === |
<code bash> | <code bash> | ||
- | BQRunAt{Start|Stop}<NN>Verbosе={0,1,2,3} # уровень сообщений | + | BQRunAtStart<NN>Verbosе={0|1|2|3} # уровень сообщений при старте |
- | 0 – сообщение отсутствует | + | BQRunAtStop<NN>Verbosе={0|1|2|3} # уровень сообщений при останове |
- | 1 – выводится UUser и имя соответствующей переменной (BQRunAt…) | + | 0 – сообщение отсутствует |
- | 2 - UUser, имя переменной и первое слово заданной команды | + | 1 – выводится UUser и имя соответствующей переменной (BQRunAt...) |
- | 3 – UUser, имя переменной и вся команда целиком (с аргументами) | + | 2 - UUser, имя переменной и первое слово заданной команды |
- | по умолчанию: 2 | + | 3 – UUser, имя переменной и вся команда целиком (с аргументами) |
+ | по умолчанию: 2 | ||
</code> | </code> | ||
Строка 59: | Строка 69: | ||
===== Использование ===== | ===== Использование ===== | ||
- | Для включения функционала необходимо установить переменную окружения BQRunAtEnabled=yes. Любое другое значение BQRunAtEnabled, в т.ч. пустое или неопределенное, отключает функционал. | + | ==== Управление запуском ==== |
- | Команды, которые необходимо привязать к событию старта брокера БД, задаются переменными вида BQRunAtStartNN, где NN – числовое значение, определяющее порядок выполнения заданной команды. Аналогично, переменные BQRunAtStopNN задают команды, привязанные к событию останова брокера БД. | + | Для включения функционала необходимо установить переменную окружения ''BQRunAtEnabled=yes''. Любое другое значение ''BQRunAtEnabled'', в т.ч. пустое или неопределенное, отключает функционал полностью. |
- | Если NN начинается на ‘0’, то соответствующая команда выполняется при остановленном брокере БД. | + | |
- | Если NN состоит из одной цифры от 1 до 5, то данная команда будет выполняться при запущенном брокере БД. Значение NN определяет приоритет команды: чем оно по модулю меньше, тем ближе к событию старта/останова будет выполняться команда. Т.е., команды со значениями 01 и 1 будут ближе по времени к этим событиям, чем команды 05 и 5. | + | Команды, которые необходимо привязать к событию старта брокера БД, задаются переменными вида ''BQRunAtStart''//NN//, где //NN// – числовое значение, определяющее порядок выполнения заданной команды. Аналогично, переменные ''BQRunAtStop''//NN// задают команды, привязанные к событию останова брокера БД. |
+ | Если //NN// начинается на ''0'' (цифру ноль), то соответствующая команда выполняется при остановленном брокере БД. | ||
+ | Если же //NN// состоит из одной цифры от ''1'' до ''5'', то данная команда будет выполняться при запущенном брокере БД. Значение //NN// определяет приоритет команды: чем оно по модулю меньше, тем ближе к событию старта/останова будет выполняться команда. То есть, команды со значениями ''01'' и ''1'' будут ближе по времени к этим событиям, чем команды ''05'' и ''5''. | ||
Таким образом, последовательность выполнения команд будет следующая: | Таким образом, последовательность выполнения команд будет следующая: | ||
Строка 69: | Строка 81: | ||
=== При старте: === | === При старте: === | ||
- | <code> | + | ''BQRunAtStart05'' \\ |
+ | ''BQRunAtStart04'' \\ | ||
+ | ''BQRunAtStart03'' \\ | ||
+ | ''BQRunAtStart02'' \\ | ||
+ | ''BQRunAtStart01'' \\ | ||
+ | //<старт брокера БД>// \\ | ||
+ | //<старт всех включенных batch-процессов>// \\ | ||
+ | //<старт всех заданных логин-брокеров (as,ws,ns)>// \\ | ||
+ | //<старт служебных процессов (APW,BIW,AIW,WDOG)>// \\ | ||
+ | ''BQRunAtStart1'' \\ | ||
+ | ''BQRunAtStart2'' \\ | ||
+ | ''BQRunAtStart3'' \\ | ||
+ | ''BQRunAtStart4'' \\ | ||
+ | ''BQRunAtStart5'' \\ | ||
- | BQRunAtStart05 | + | __Важно__: блок ''BQRunAtStart//[1-5]//'' выполняется только в случае успешного старта брокера БД. |
- | BQRunAtStart04 | + | |
- | BQRunAtStart03 | + | |
- | BQRunAtStart02 | + | |
- | BQRunAtStart01 | + | |
- | <старт брокера БД> | + | |
- | <старт всех включенных batch-процессов> | + | |
- | <старт всех заданных логин-брокеров (as,ws,ns)> | + | |
- | <старт служебных процессов (APW,BIW,AIW,WDOG)> | + | |
- | BQRunAtStart1 | + | |
- | BQRunAtStart2 | + | |
- | BQRunAtStart3 | + | |
- | BQRunAtStart4 | + | |
- | BQRunAtStart5 | + | |
- | + | ||
- | </code> | + | |
- | + | ||
- | __Важно__: блок BQRunAtStart[1-5] выполняется только в случае успешного старта брокера БД. | + | |
=== При останове: === | === При останове: === | ||
- | <code> | + | ''BQRunAtStop5'' \\ |
- | BQRunAtStop5 | + | ''BQRunAtStop4'' \\ |
- | BQRunAtStop4 | + | ''BQRunAtStop3'' \\ |
- | BQRunAtStop3 | + | ''BQRunAtStop2'' \\ |
- | BQRunAtStop2 | + | ''BQRunAtStop1'' \\ |
- | BQRunAtStop1 | + | //<останов брокера БД>// \\ |
- | <останов брокера БД> | + | ''BQRunAtStop01'' \\ |
- | BQRunAtStop01 | + | ''BQRunAtStop02'' \\ |
- | BQRunAtStop02 | + | ''BQRunAtStop03'' \\ |
- | BQRunAtStop03 | + | ''BQRunAtStop04'' \\ |
- | BQRunAtStop04 | + | ''BQRunAtStop05'' \\ |
- | BQRunAtStop05 | + | |
- | </code> | + | |
- | __Важно__: Все команды BQRunAtStopNN выполняются вне зависимости от успешности выполнения команды останова брокера БД. | + | __Важно__: Все команды ''BQRunAtStop''//NN// выполняются вне зависимости от успешности выполнения команды останова брокера БД. |
Никаких пауз или ожиданий при выполнении команд BQRunAt не производится. | Никаких пауз или ожиданий при выполнении команд BQRunAt не производится. | ||
- | Команды выполняются в среде, установленной скриптом bq.sh, то есть все основные переменные определены и доступны. Также следует учитывать, что в PATH к этому моменту будут добавлены каталоги $DLC/bin и $BQ/bin, что позволяет во многих случаях не указывать полный путь при настройке команд BQRunAt. | + | Команды выполняются в среде, установленной скриптом bq.sh, то есть все основные переменные определены и доступны. Также следует учитывать, что в переменную ''PATH'' к этому моменту будут добавлены каталоги ''$DLC/bin'' и ''$BQ/bin'', что позволяет во многих случаях не указывать полный путь при настройке команд BQRunAt. |
- | При использовании подстановок shell-переменных в настойке команд BQRunAt следует учитывать, что неэкранированные переменные подставляются в момент определения BQRunAt, а экранированные – в момент выполнения. Например, запись: | + | При использовании подстановок shell-переменных в настойке команд BQRunAt следует учитывать, что не экранированные переменные подставляются в момент определения BQRunAt, а экранированные – в момент выполнения. Например, запись: |
<code bash> | <code bash> | ||
Строка 118: | Строка 124: | ||
</code> | </code> | ||
- | не приведет к желаемому результату, т.к. переменная PROEXE определяется в самом bq.sh и на момент задания BQRunAtStart3 еще не доступна. Подстановка же переменных BQDB и BQPF будет успешной, если определение BQRunAtStart3 идет в запускающем скрипте __после__ определения этих переменных. | + | не приведет к желаемому результату, т.к. переменная ''PROEXE'' определяется в самом bq.sh и на момент задания ''BQRunAtStart3'' еще не доступна. Подстановка же переменных ''BQDB'' и ''BQPF'' будет успешной, если определение ''BQRunAtStart3'' идет в запускающем скрипте __после__ определения этих переменных. |
Для описанного применения следует использовать такую запись: | Для описанного применения следует использовать такую запись: | ||
<code bash> | <code bash> | ||
- | BQRunAtStart3=”\$PROEXE $BQDB -pf $BQPF –p my-procedure.p” | + | BQRunAtStart3=”\$PROEXE \$BQDB -pf \$BQPF –p my-procedure.p” |
</code> | </code> | ||
Строка 132: | Строка 138: | ||
</code> | </code> | ||
- | Во втором и третьем случае все переменные указанной команды подставляются только в момент запуска BQRunAtStart3. | + | Во втором и третьем случае все переменные указанной команды подставляются только в момент запуска ''BQRunAtStart3''. |
+ | |||
+ | ==== Управление полномочиями ==== | ||
+ | |||
+ | Функционалом предусмотрена возможность выполнения команд BQRunAt | ||
+ | под полномочиями заданного пользователя unix с помощью системной | ||
+ | команды ''su'' или аналога (определяется в bq.sh). По умолчанию все команды | ||
+ | BQRunAt будут запускаться из-под unix-пользователя **bis**. | ||
+ | |||
+ | В случае необходимости изменить пользователя можно установкой переменной: | ||
+ | <code bash> | ||
+ | |||
+ | BQRunAtUUser={<unix-user>|.} # unix-user для выполнения всех команд BQRunAt | ||
+ | |||
+ | </code> | ||
+ | Специальное значение ''BQRunAtUUser=.'' (точка) отключает использование ''su''. В этом случае | ||
+ | все команды BQRunAt будут запускаться с полномочиями текущего пользователя | ||
+ | (под которым выполняется bq.sh в данный момент). Будьте осторожны при использовании данного режима: | ||
+ | возможны конфликты с правами доступа и потенциальные уязвимости. | ||
+ | |||
+ | Установкой перечисленных ниже переменных можно задать unix-пользователя для каждой | ||
+ | конкретной команды ''BQRunAtStart''//NN// или ''BQRunAtStop''//NN//: | ||
+ | <code bash> | ||
+ | |||
+ | BQRunAtStart<NN>UUser={<unix-user>|.} | ||
+ | BQRunAtStop<NN>UUser={<unix-user>|.} | ||
+ | |||
+ | </code> | ||
+ | Под заданным пользователем будет выполнятся только указанная команда. Для остальных | ||
+ | по прежнему будет использоваться значение по умолчанию из переменной ''BQRunAtUUser''. | ||
+ | Здесь также специальное значение "''.''" (точка) приводит к выполнению команд | ||
+ | под текущим пользователем. | ||
+ | |||
+ | ==== Управление сообщениями ==== | ||
+ | |||
+ | Перед запуском каждой из заданных команд BQRunAt скрипт bq.sh выводит | ||
+ | в stdout (на терминал) информационное сообщение. | ||
+ | Установкой описанных ниже переменных можно управлять степенью подробности | ||
+ | этих сообщений. Уровень подробности задается отдельно для каждой из команд BQRunAt. | ||
+ | <code bash> | ||
+ | |||
+ | BQRunAtStart<NN>Verbosе={0|1|2|3} # уровень сообщений при старте | ||
+ | BQRunAtStop<NN>Verbosе={0|1|2|3} # уровень сообщений при останове | ||
+ | |||
+ | </code> | ||
+ | Предусмотрены следующие значения: | ||
+ | |||
+ | * ''0'' – сообщение отсутствует | ||
+ | * ''1'' – выводится UUser и имя соответствующей переменной (''BQRunAt''...) | ||
+ | * ''2'' – UUser, имя переменной и первое слово заданной команды | ||
+ | * ''3'' – UUser, имя переменной и вся команда целиком (с аргументами) | ||
+ | |||
+ | По умолчанию принимается значение: ''2'' | ||
+ | |||
+ | ===== История версий ===== | ||
+ | |||
+ | v.4.6.2 //в процессе реализации// \\ | ||
+ | [+] Добавлено управление полномочиями (переменные BQRunAtUUser, BQRunAtStart//NN//UUser, BQRunAtStop//NN//UUser) | ||
- | ==== Использование: управление полномочиями ==== | ||
- | Все команды выполняются с полномочиями, определяемыми переменной BQRunAtUUser, в которой указывается имя unix-пользователя. | + | v.4.6.1 30.08.2011 cksum: 1480063694 \\ |
+ | [*] Функция BQRunAtStop: изменен порядок вызова, теперь: 5,4,3,2,1 | ||
+ | v.4.6.0 15.12.2010 cksum: 1976088185 \\ | ||
+ | [+] Добавлен функционал: BQRunAtStart, BQRunAtStop | ||
- | ==== Использование: управление сообщениями ==== | ||
+ | {{tag>scripts doc}} | ||