сценарий upstart не выбирает системную переменную среды по умолчанию

У меня есть один сервис на основе openstack. Который мы запускаем, используя 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

Когда я проверяю свою систему locale, отображается LANG=zh_CN.UTF-8.

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

Когда я запускаю сервис upstart, LANG отображается как пустая строка (значит, не настроен для сервиса upstart)

Если я дал env LANG=zh_CN.UTF-8 в сценарии upstart, он работает нормально.

Почему выскочка не берет по умолчанию locale?

Почему мы должны установить то же самое env в нашем скрипте выскочки?

1
задан 8 October 2015 в 16:15

1 ответ

Выскочка по умолчанию запустит задания в очень строгой среде. Мое предположение, почему это делает это по крайней мере по одной причине, то, что это не может предположить, что Вы хотите выполнить задание как корень или любого другого данного пользователя. Таким образом, это пытается быть строгим и безопасным по умолчанию.

См.: http://upstart.ubuntu.com/cookbook/#job-environment

1
ответ дан 9 October 2015 в 02:15
  • 1
    Я перекомпилировал все, и теперь я могу загрузиться очень хорошо. Спасибо – MindlessMutagen 28 December 2016 в 17:07

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

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