passando porta para calibre-servidor via variável env no script upstart

0

Estou tentando escrever um script para o servidor de caliber .

Eu posso adicionar todos os argumentos que eu preciso usando variáveis env, exceto para --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

Usando o script acima, se eu executar start calibre-server , ele não inicia e em /var/log/upstart/calibre-server.log recebo calibre-server: erro: opção --port: valor inteiro inválido: u '$ PORT'

Remover as aspas para alterar a declaração para env PORT=80 não ajuda.

Mudar o ARGS para env ARGS='--auto-reload --max-cover $MAX_COVER --port 80' funciona perfeitamente, mas não é o ideal, pois gostaria de manter todas as variáveis consistentemente declaradas separadamente.

Qualquer ajuda muito apreciada. Também o primeiro roteiro iniciante que eu escrevi gritando sobre qualquer outra coisa que está obviamente errado com isso seria legal.

Estou usando uma nova instalação do Ubuntu 14.04.

    
por Sixhobbits 03.08.2014 / 00:46

1 resposta

1

Eu não tenho idéia de como MAX_COVER está funcionando, mas as variáveis não se expandem nas sub-rotinas env. Por exemplo, faça o seguinte trabalho:

env US=yhej
env SU="$US"

exec echo $US $SU

Se as variáveis fossem expandidas, isso resultaria:

yhej yhej

mas, em vez disso, gera:

yhej $US

Você pode modificar seu trabalho para usar uma seção de script e as variáveis serão expandidas:

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
    
por CameronNemo 04.08.2014 / 03:19