我正在尝试使用upstart在Ubuntu 12.10上为tomcat创建服务。
所以,我在/ etc / init
中创建了一个tomcat.conf文件description "Tomcat Server"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 10 5
# run as non privileged user
# add user with this command:
## adduser --system --ingroup www-data --home /opt/apache-tomcat apache-tomcat
# Ubuntu 12.04: (use 'exec sudo -u apache-tomcat' when using 10.04)
setuid tomcat
setgid tomcat
pre-start script
. /etc/default/tomcat
end script
exec $CATALINA_HOME/bin/catalina.sh run
# cleanup temp directory after stop
post-stop script
rm -rf $CATALINA_HOME/temp/*
end script
/ etc / default / tomcat文件包含env变量,我需要在启动服务之前设置这些变量。
但是,采购文件无效。当我从/ etc / default / tomcat文件窗体命令行获取时,它工作正常。但是当我将它包含在脚本中时,它没有任何效果。
可能出现什么问题?
答案 0 :(得分:1)
您可能需要逐个导出每个环境变量。像这样:
script
. /etc/default/tomcat
export CATALINA_HOME
exec $CATALINA_HOME/bin/catalina.sh run
end script
应该导致CATALINA_HOME可用于catalina.sh文件。
答案 1 :(得分:1)
upstart中的嵌套脚本(例如pre-start)继承了封闭文件中设置的环境,但嵌套脚本中所做的任何更改都不会对封闭脚本的环境产生任何影响。
来源:http://upstart.ubuntu.com/cookbook/#environment-variables(请参阅该部分末尾附近的长示例)
答案 2 :(得分:1)