Я пытаюсь написать сценарий запуска для калибровочного сервера .
Я могу добавить все нужные мне аргументы, используя переменные 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'
работает отлично, но не идеально, поскольку я хотел бы, чтобы все переменные последовательно объявлялись отдельно.
Я использую новую версию Ubuntu 14.04.
Я понятия не имею, как 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