Van*_*Van 6 environment-variables systemd
我正在从新贵迁移到systemd。我在使用EnvironmentFile指令进行转换时遇到了一些麻烦。我无法让这个EnvironmentFile工作:
########################################################
# Catalina Settings
CLUSTER_BASE=/d01/tomcat/prod/xyz
CATALINA_BASE=$CLUSTER_BASE/1
CATALINA_TMPDIR=$CATALINA_BASE/temp
CATALINA_HOME=/usr/share/tomcat7
CATALINA_PID=/run/tomcat/tc-prod-xyz-1.pid
########################################################
# Java Settings
JAVA_HOME=/usr/lib/jvm/default-java/jre
JAVA_OPTS=-Djava.awt.headless=true
JAVA_OPTS=$JAVA_OPTS -server
JAVA_OPTS=$JAVA_OPTS -Xms2048m
JAVA_OPTS=$JAVA_OPTS -Xmx2048m
JAVA_OPTS=$JAVA_OPTS -XX:MaxPermSize=2048m
JAVA_OPTS=$JAVA_OPTS -XX:+UseParallelGC
JAVA_OPTS=$JAVA_OPTS -XX:+AggressiveHeap
JAVA_OPTS=$JAVA_OPTS -javaagent:$CLUSTER_BASE/newrelic/newrelic.jar
Run Code Online (Sandbox Code Playgroud)
看起来我在这种类型的语句中重用了一个变量:
JAVA_OPTS=$JAVA_OPTS -XX:+UseParallelGC
Run Code Online (Sandbox Code Playgroud)
systemd不像upstart那样支持它。systemd是否支持这样的东西,还是我需要做一个长而难以阅读的声明?
phe*_*mer 13
不幸的是,您拥有的文件实际上是一个 shell 脚本。过去,大多数 init 系统/脚本都解释了使用 shell 提供环境变量的文件,因此您可以在其中执行 shell 操作。然而,Systemd 不会这样做。环境文件是真正的环境文件,而不是脚本。这记录在systemd.exec手册页中:
字符串内部不进行变量扩展,但可以进行说明符扩展。$ 字符没有特殊含义。
因此,您有 2 个选择。
手动展开所有变量。意义使用CATALINA_BASE=/d01/tomcat/prod/xyz/1。
使用 shell 评估文件:
ExecStart=/bin/bash -ac '. /path/to/env_file; exec /path/to/program'
| 归档时间: |
|
| 查看次数: |
13469 次 |
| 最近记录: |