あなたの問題は環境変数の内容のスペースによるものだと思います。systemd docsの例を見ると、割り当ては単一の文字列である必要があります。
例:
Environment="ONE=one" 'TWO=two two'
ExecStart=/bin/echo $ONE $TWO ${TWO}
これは、/ binに/ 4引数でエコーを実行します: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、、および引数で2回目
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する場合)、実際に使用する方法があります。ありがとう!systemdtomcatEnvironmentFile