我认为您的问题是由于环境变量内容中的空间不足。查看systemd文档中的示例,分配应为单个字符串:
例:
Environment="ONE=one" 'TWO=two two'
ExecStart=/bin/echo $ONE $TWO ${TWO}
这将执行/斌/回声四个参数:one
,two
,two
,和two two
。
例:
Environment=ONE='one' "TWO='two two' too" THREE=
ExecStart=/bin/echo ${ONE} ${TWO} ${THREE}
ExecStart=/bin/echo $ONE $TWO $THREE
这导致在回声被调用两次,第一次用参数
'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
并在中获得所需的输出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
当然,使用它会更简单EnvironmentFile
。Environment
将以下内容替换为可获得相同的预期结果:
EnvironmentFile=/tmp/foo
/tmp/foo
包含在何处(注意缺少引号):
CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current
CATALINA_OPTS
在systemd
Apachetomcat
7.0.61的环境中使用),EnvironmentFile
确实可以使用。谢谢!