script upstart não está escolhendo a variável de ambiente padrão do sistema

1

Eu tenho um serviço baseado em openstack. Que estamos usando o script upstart .

script upstart

# filename: /etc/init/myservice.conf

start on runlevel [2345] and started mountall
stop on runlevel [016]


env OS_SVC_ENABLE_CONTROL=1
export OS_SVC_ENABLE_CONTROL

pre-start script
  mkdir -p /var/run/myservice
  chown -R myservice:myservice /var/run/myservice
end script

respawn
# the default post-start of 1 second sleep delays respawning enough to
# not hit the default of 10 times in 5 seconds. Make it 2 times in 5s.
respawn limit 2 5

exec start-stop-daemon --start -c myservice --exec /opt/stack/bin/myservice --

post-start exec sleep 1

Quando eu verifico meu sistema locale , ele mostra LANG=zh_CN.UTF-8 .

root@localhost:~# locale | grep LANG
LANG=zh_CN.UTF-8
LANGUAGE=

Quando executo o serviço upstart, LANG está mostrando como string vazia (significa que não foi definido para o serviço iniciante)

Se eu dei env LANG=zh_CN.UTF-8 no script inicial, está funcionando bem.

Por que o upstart não está recebendo o padrão locale ?

Por que precisamos definir o mesmo env em nosso script inicial?

    
por Lafada 08.10.2015 / 15:01

1 resposta

1

Por padrão, o Upstart inicializará tarefas em um ambiente muito restritivo. Meu palpite por que isso acontece, por pelo menos uma razão, é que não se pode supor que você queira executar o trabalho como root ou qualquer outro usuário. Por isso, tenta ser restritivo e seguro por padrão.

Veja: link

    
por Xerion 08.11.2015 / 06:08