Сценарий 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 ответ
Upstart по умолчанию запускает задания в очень строгой среде. Я предполагаю, почему это происходит, по крайней мере, по одной причине: он не может предполагать, что вы хотите запустить задание от имени пользователя root или любого другого данного пользователя. Таким образом, он пытается быть ограниченным и безопасным по умолчанию.
Смотрите: http://upstart.ubuntu.com/cookbook/