upstart 脚本没有选择系统默认环境变量

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新贵脚本,它就能正常工作。

为什么新贵不采取默认措施locale

为什么我们必须env在 upstart 脚本中进行相同的设置?

答案1

Upstart 默认会在非常严格的环境中启动作业。我猜它这样做的原因至少有一个,那就是它无法假设您想以 root 或任何其他给定用户的身份运行作业。因此,默认情况下,它会尝试严格且安全。

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

相关内容