Kar*_*ter 22 environment-variables systemd
我想指定一个Environment
systemd
包含的指令=
,例如
Environment=CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current
Run Code Online (Sandbox Code Playgroud)
并得到错误
[/lib/systemd/system/archiva.service:10] Invalid environment assignment, ignoring: CATALINA_OPTS=-Dappserver.home\=/var/lib/archiva/apache
Run Code Online (Sandbox Code Playgroud)
在journalctl -xe
。我试图用报价"
和'
和逃跑=
用\
都没有成功。这似乎没有记录。
mur*_*uru 44
我认为您的问题是由于环境变量内容中的空间造成的。查看systemd docs中的示例,分配应该是单个字符串:
例子:
Run Code Online (Sandbox Code Playgroud)Environment="ONE=one" 'TWO=two two' ExecStart=/bin/echo $ONE $TWO ${TWO}
这将执行/斌/回声四个参数:
one
,two
,two
,和two two
。例子:
Run Code Online (Sandbox Code Playgroud)Environment=ONE='one' "TWO='two two' too" THREE= ExecStart=/bin/echo ${ONE} ${TWO} ${THREE} ExecStart=/bin/echo $ONE $TWO $THREE
这导致 echo 被调用两次,第一次使用参数
'one'
,'two two' too
,,第二次使用参数
one
,two two
,too
。
我使用以下服务对此进行了测试(注意整个作业周围的引号):
[Unit]
Description=My Daemon
[Service]
Environment='CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current'
ExecStart=/bin/echo ${CATALINA_OPTS}
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
并获得了所需的输出journalctl
:
Apr 26 08:19:29 laptop echo[28439]: -Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current
Run Code Online (Sandbox Code Playgroud)
当然,使用它会更简单EnvironmentFile
。将 替换为Environment
以下给出了相同的预期结果:
EnvironmentFile=/tmp/foo
Run Code Online (Sandbox Code Playgroud)
其中/tmp/foo
包含(注意没有引号):
CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
68610 次 |
最近记录: |