Запуск сервисов в schroot

Knoppix

Модераторы: Warderer, Модераторы разделов

prof
Сообщения: 119
ОС: gentoo

Запуск сервисов в schroot

Сообщение prof »

В общем решил очередной сервер на debian установить. Возникла необходимость запускать некоторые сервисы в schroot, т.к. система 64битная, а сервисы (всего пара) нужны 32битные.
Настроил всё, но остался вопрос как стартовать и останавливать эти сервисы при запуске и остановке системы?

Какой есть механизм, вроде gentoo'шного /etc/conf.d/local.start и /etc/conf.d/local.stop ? Что-то не увидел я такого.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Запуск сервисов в schroot

Сообщение sash-kan »

если нужно просто выполнить команды при старте, то /etc/rc.local
если нужны полноценные старт/стоповые скрипты, то они находятся в /etc/init.d/, их запуск с параметрами start/stop осуществляется благодаря symlink-ам в /etc/rc?.d, которыми можно заведовать и вручную, а можно и, например, через update-rc.d.
по поводу запуска демонов в schroot прочитайте в man schroot.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Запуск сервисов в schroot

Сообщение watashiwa_daredeska »

sash-kan писал(а):
07.04.2011 22:12
если нужны полноценные старт/стоповые скрипты, то они находятся в /etc/init.d/, их запуск с параметрами start/stop осуществляется благодаря symlink-ам в /etc/rc?.d, которыми можно заведовать и вручную, а можно и, например, через update-rc.d.
Добавлю, что имеется /etc/init.d/skeleton — скелет rc-скрипта, который сильно облегчает задачу написания собственного rc-скрипта.
Спасибо сказали:
prof
Сообщения: 119
ОС: gentoo

Re: Запуск сервисов в schroot

Сообщение prof »

по поводу запуска демонов в schroot прочитайте в man schroot.
Мне показалось, что я смог объяснить что сам запуск освоен, речь идёт об автоматизации процесса.

Добавлю, что имеется /etc/init.d/skeleton — скелет rc-скрипта, который сильно облегчает задачу написания собственного rc-скрипта.
Жаль, надеялся на существование подобных механизмов "везде". Ладно, будем велоспедить.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Запуск сервисов в schroot

Сообщение watashiwa_daredeska »

prof писал(а):
08.04.2011 20:09
Добавлю, что имеется /etc/init.d/skeleton — скелет rc-скрипта, который сильно облегчает задачу написания собственного rc-скрипта.
Жаль, …будем велоспедить.
Ну, можете считать, что /etc/init.d/skeleton не существует, и не велосипедить :)
Спасибо сказали:
prof
Сообщения: 119
ОС: gentoo

Re: Запуск сервисов в schroot

Сообщение prof »

watashiwa_daredeska писал(а):
08.04.2011 23:57
Ну, можете считать, что /etc/init.d/skeleton не существует, и не велосипедить :)
Опять меня не поняли.
Мне не нужны полноценные rc-скрипты, т.к. они уже есть внутри schroot'а установлены. Нужно их только запустить при старте и остановить при выключении системы. А мне предлагают написать скрипты с файлами конфигурации в /etc/default, с созданием pid-файлов и прочее. Вот это и есть "велосипедить"

Всего-то стоило ответить что аналога local.stop нет. Аналог local.start я видел.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Запуск сервисов в schroot

Сообщение sash-kan »

prof писал(а):
08.04.2011 20:09
сам запуск освоен
т.е. старт-стоповый скрипт (понимающий по крайней мере пару аргументов start и stop) имеется? так поместите его в /etc/init.d и ссылку сделайте из нужных runlevel-ов. и всё.

prof писал(а):
09.04.2011 16:12
А мне предлагают написать скрипты с файлами конфигурации в /etc/default
кто это вам предлагал?


prof писал(а):
09.04.2011 16:12
Всего-то стоило ответить что аналога local.stop нет
это что-то из bsd-init-style? вы думаете, много кто за пределами узких рядов bsd-любителей что-то о них слышал? напрасно.

p.s. wikipedia://init — в помощь.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
prof
Сообщения: 119
ОС: gentoo

Re: Запуск сервисов в schroot

Сообщение prof »

sash-kan писал(а):
09.04.2011 16:48
prof писал(а):
08.04.2011 20:09
сам запуск освоен
т.е. старт-стоповый скрипт (понимающий по крайней мере пару аргументов start и stop) имеется? так поместите его в /etc/init.d и ссылку сделайте из нужных runlevel-ов. и всё.
Вы сами пытались читать man schroot как рекомендовали мне? Представляете себе разницу в функционировании процессов внутри и вне chroot'а?

sash-kan писал(а):
09.04.2011 16:48
prof писал(а):
09.04.2011 16:12
А мне предлагают написать скрипты с файлами конфигурации в /etc/default
кто это вам предлагал?
Как бэ:
Добавлю, что имеется /etc/init.d/skeleton — скелет rc-скрипта, который сильно облегчает задачу написания собственного rc-скрипта.
Или привести выдержки из самого /etc/init.d/skeleton?

sash-kan писал(а):
09.04.2011 16:48
prof писал(а):
09.04.2011 16:12
Всего-то стоило ответить что аналога local.stop нет
это что-то из bsd-init-style? вы думаете, много кто за пределами узких рядов bsd-любителей что-то о них слышал? напрасно.
Ну так и спросили бы, раз не знаете.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Запуск сервисов в schroot

Сообщение sash-kan »

prof писал(а):
09.04.2011 19:51
Вы сами пытались читать man schroot как рекомендовали мне? Представляете себе разницу в функционировании процессов внутри и вне chroot'а?
тот, что нашёл в интернете, просмотрел на предмет упоминаний о демонизации. на беглый взгляд — довольно внятно изложено.
разницу в функционировании предствляю.

prof писал(а):
09.04.2011 19:51
Или привести выдержки из самого /etc/init.d/skeleton?
в моей системе:
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
надеюсь, перевод не нужен и понятно, что наличие файла — опционально.
и скрипт вам писать не предлагают. он уже есть. /etc/init.d/skeleton. скопируйте и подставьте в него нужное.

prof писал(а):
09.04.2011 19:51
Ну так и спросили бы, раз не знаете.
а я догадливый. а вам порекомендую всё-таки взглянуть на статью в википедии. чтобы примерно уяснить себе ту пропасть, что лежит между bsd и sysv стилями инициализации. а то так и будете возмущаться, почему никто не догадывается, чего же именно вы не знаете/понимаете.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
prof
Сообщения: 119
ОС: gentoo

Re: Запуск сервисов в schroot

Сообщение prof »

sash-kan писал(а):
09.04.2011 21:00
в моей системе:
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
надеюсь, перевод не нужен и понятно, что наличие файла — опционально.
и скрипт вам писать не предлагают. он уже есть. /etc/init.d/skeleton. скопируйте и подставьте в него нужное.
Там не нужно практически всё. Не нужны:
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS="--options args"
PIDFILE=/var/run/$NAME.pid

start-stop-daemon --start
start-stop-daemon --stop

Поиск по пидфайлу, которого не будет. Нужно выполнение некоторых команд в самом конце инициализации, и в самом начале при отключении системы. Единственное что приходит в голову, это использования skeleton для разработки аналога /etc/init.d/local.

sash-kan писал(а):
09.04.2011 21:00
а я догадливый. а вам порекомендую всё-таки взглянуть на статью в википедии. чтобы примерно уяснить себе ту пропасть, что лежит между bsd и sysv стилями инициализации. а то так и будете возмущаться, почему никто не догадывается, чего же именно вы не знаете/понимаете.
Да я и сам догадливый, до gentoo долго пользовался redhat-based решениями. Так что разницу между sysv и bsd стилями знаю хорошо.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Запуск сервисов в schroot

Сообщение KiWi »

prof писал(а):
09.04.2011 16:12
watashiwa_daredeska писал(а):
08.04.2011 23:57
Ну, можете считать, что /etc/init.d/skeleton не существует, и не велосипедить :)
Опять меня не поняли.
Мне не нужны полноценные rc-скрипты, т.к. они уже есть внутри schroot'а установлены. Нужно их только запустить при старте и остановить при выключении системы. А мне предлагают написать скрипты с файлами конфигурации в /etc/default, с созданием pid-файлов и прочее. Вот это и есть "велосипедить"

Всего-то стоило ответить что аналога local.stop нет. Аналог local.start я видел.

Что мешает написать init-скрипт, запускающий init в chroot, чтобы тот в свою очередь запустил сервисы внутри chroot?
Спасибо сказали:
prof
Сообщения: 119
ОС: gentoo

Re: Запуск сервисов в schroot

Сообщение prof »

KiWi писал(а):
10.04.2011 00:56
Что мешает написать init-скрипт, запускающий init в chroot, чтобы тот в свою очередь запустил сервисы внутри chroot?
То же, что не позволяет нанимать шагающий карьерный экскаватор для выкапывания выгребной ямы под дачным туалетом.

"Велосипед" получился не плохим, ИМХО. Пришлось допилить rc.local. Получилось, вроде, как в openrc. Заинтересованных лиц приглашаю к тестированию.

Код: Выделить всё

#! /bin/sh
### BEGIN INIT INFO
# Provides:          rc.zlocal
# Required-Start:    $remote_fs $syslog $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Run scripts from /etc/local.d if it's exist
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin

. /lib/init/vars.sh
. /lib/lsb/init-functions

do_start() {
    [ "$VERBOSE" != no ] && log_begin_msg "Running local start scripts from /etc/local.d"
    local file
    local s_name
    for file in /etc/local.d/*.start ; do
        s_name=$(basename "$file")
        [ "$VERBOSE" != no ] && log_begin_msg "> $s_name"
        [ -x "$file" ] && "$file"
        ES=$?
        [ "$VERBOSE" != no ] && log_end_msg $ES
    done
    [ "$VERBOSE" != no ] && log_end_msg 0
    return 0
}

do_stop() {
    [ "$VERBOSE" != no ] && log_begin_msg "Running local stop scripts from /etc/local.d"
    local file
    local s_name
    for file in /etc/local.d/*.stop; do
        s_name=$(basename "$file")
        [ "$VERBOSE" != no ] && log_begin_msg "> $s_name"
        [ -x "$file" ] && "$file"
        ES=$?
        [ "$VERBOSE" != no ] && log_end_msg $ES
    done
    [ "$VERBOSE" != no ] && log_end_msg 0
    return 0
}

case "$1" in
    start)
        do_start
        ;;
    restart|reload|force-reload)
        $0 stop
        $0 start
        ;;
    stop)
        do_stop
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|force-reload|reload}" >&2
        exit 3
        ;;
esac

Принимаются предложения по названию.
Спасибо сказали: