передача порта на сервер калибра через переменную env в сценарии upstart

Я пытаюсь написать сценарий запуска для калибровочного сервера .

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

description "Calibre (ebook manager) content server"

start on runlevel [2345]
stop on runlevel [^2345]

respawn

env USER='test'
env PASSWORD='test'
env LIBRARY_PATH='/var/lib/calibre'
env NAME='calibre-server'
env DAEMON='/usr/bin/$NAME'
env MAX_COVER='300x400'
env PORT='80'

env ARGS='--auto-reload --max-cover $MAX_COVER --port $PORT'

exec /usr/bin/calibre-server --with-library $LIBRARY_PATH $ARGS --username $USER --password $PASSWORD

Используя приведенный выше скрипт, если я запускаю start calibre-server, он не запускается и в /var/log/upstart/calibre-server.log я получаю калибр-сервер: ошибка: опция --port: недопустимое целочисленное значение: u '$ PORT'

Удаление кавычек для изменения объявления на env PORT=80 не помогает.

Изменение ARGS на env ARGS='--auto-reload --max-cover $MAX_COVER --port 80' работает отлично, но не идеально, поскольку я хотел бы, чтобы все переменные последовательно объявлялись отдельно.

1111 Любая помощь очень ценится. Также был бы хорош первый выскочивший сценарий, который так кричал обо всем, что явно не так с ним.

Я использую новую версию Ubuntu 14.04.

0
задан 3 August 2014 в 02:46

1 ответ

Я понятия не имею, как MAX_COVER работает, но переменные не расширяются в огибающих строках файла конфигурации. Например, устройтесь на следующую работу:

env US=yhej
env SU="$US"

exec echo $US $SU

, Если бы переменные расширились, это произвело бы:

yhej yhej

, но вместо этого, это производит:

yhej $US

можно изменить задание для использования раздела сценария, и переменные будут расширены:

description "Calibre (ebook manager) content server"

start on runlevel [2345]
stop on runlevel [^2345]

respawn

env USER='test'
env PASSWORD='test'
env LIBRARY_PATH='/var/lib/calibre'
env MAX_COVER='300x400'
env PORT='80'

script
    exec /usr/bin/calibre-server --with-library $LIBRARY_PATH --auto-reload \
                                 --max-cover $MAX_COVER --port $PORT \
                                 --username $USER --password $PASSWORD
end script
1
ответ дан 3 August 2014 в 02:46

Другие вопросы по тегам:

Похожие вопросы: