The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Вопросы по созданию rc скрипта"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Вопросы по созданию rc скрипта"  +/
Сообщение от DHCPep (?), 15-Сен-19, 21:57 
Здравствуйте Уважаемые!

Пишу тут стартовый скрипт, чтобы при старте системы запускал мой воркер. Хочу сделать по уму, т.е. через стартовые скрипты, а не жостко прописать в rc.local

Итак, всё это в FreeBSD.
rc.conf:
====================================================
MyWorker_enable="YES"
MyWorker_dir="/var/www/vhosts/my.app"


Стартовый скрипт MyWorker:
====================================================
#!/bin/sh

. /etc/rc.subr

name="MyWorker"
rcvar=`set_rcvar`

: ${MyWorker_dir:=}

command_interpreter="/bin/sh"
command="worker/shell/start.worker.sh"
pidfile="/var/run/${name}.pid"

start_precmd="${name}_prestart"

# Проверяем наличие стартовых скриптов и переходим в указанную папку
MyWorker_prestart(){
    # Должен быть указан базовый каталог приложения
    if [ -z ${MyWorker_dir} ] ; then
        warn "MyWorker_dir is not set."

        return 1
    fi

    # Он должен существовать
    if [ ! -d ${MyWorker_dir} ] ; then
        warn "MyWorker dir [ ${MyWorker_dir} ] not exists."

        return 1
    fi

    # Должен существовать стартовый скрипт воркера
    if [ ! -f ${MyWorker_dir}/worker/shell/start.worker.sh ] ; then
        warn "Main worker script [ ${MyWorker_dir}/worker/shell/start.worker.sh ] not exist."
        warn "incorrect MyWorker_dir settings?"

        return 1
    fi

    # Go to basedir
    cd ${MyWorker_dir}

    return 0
}

load_rc_config ${name}
run_rc_command "$1"

=============================================
В чём проблема? Проблема в том, что путь в котором запускаемый этим скриптом файл, лежит в каталоге задаваемом в rc.conf MyWorker_dir
И значит в стартовом скрипте я не могу статически прописать значение command=..., т.к. полный путь зависит от настройки в rc.conf

Я понимаю, что это можно решить заменив стартовую процедуру start_cmd="${name}_start"
и в ней описать уже имея на руках значение этой переменной из rc.conf, но тогда я не понимаю - как сделать чтобы pid файл корректно создался? Как передать системе инициализаци после команды start, какой PID надо сохранить в pid файле указанном в pidfile="/var/run/${name}.pid"?

Помогите пожалуйста разобраться.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Вопросы по созданию rc скрипта"  +/
Сообщение от Аноним (1), 16-Сен-19, 08:26 
Вам сюда https://www.freebsd.org/doc/en_US.ISO8859-1/articles/rc-scri...
Читаем, потом думаем, потом опять читаем, потом.. (и т.д.)
А иначе.. ну, в этой ситуации мы как бы уже это.. Наши полномочия уже как бы всё.. Окончены!
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Вопросы по созданию rc скрипта"  +/
Сообщение от Сергей (??), 16-Сен-19, 12:22 
  А чото вы хотите
: ${MyWorker_dir:=}
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Вопросы по созданию rc скрипта"  +/
Сообщение от Аноним (1), 16-Сен-19, 13:48 
>   А чото вы хотите

Что хочу? Не знаю..
Что знаю - не хочу!

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру