【问题标题】:Source a file in upstart conf file在 upstart conf 文件中获取文件
【发布时间】:2013-12-07 15:31:05
【问题描述】:

我正在尝试使用 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 文件包含环境变量,我需要在启动服务之前设置。

但是,获取文件没有任何效果。当我从命令行获取 /etc/default/tomcat 文件时,它工作正常。但是当我将它包含在脚本中时,它没有任何效果。

可能出了什么问题?

【问题讨论】:

    标签: ubuntu service upstart ubuntu-12.10


    【解决方案1】:
    【解决方案2】:

    upstart 中的嵌套脚本(例如 pre-start)继承封闭文件中设置的环境,但在嵌套脚本中所做的任何更改都不会影响封闭脚本的环境。

    来源:http://upstart.ubuntu.com/cookbook/#environment-variables(请参阅该部分末尾附近的长示例)

    【讨论】:

      【解决方案3】:

      您可能需要逐个导出每个环境变量。像这样的:

      script
          . /etc/default/tomcat
          export CATALINA_HOME
          exec $CATALINA_HOME/bin/catalina.sh run
      end script
      

      应该导致 CATALINA_HOME 可用于 catalina.sh 文件。

      【讨论】:

        猜你喜欢
        • 2022-12-11
        • 2015-04-09
        • 2023-04-03
        • 2016-03-14
        • 2017-08-22
        • 1970-01-01
        • 2021-09-25
        • 2014-05-16
        • 2011-12-31
        相关资源
        最近更新 更多