Ich denke, Ihr Problem ist auf den Platz im Inhalt der Umgebungsvariablen zurückzuführen. In den Beispielen aus den systemd-Dokumenten sollte eine Zuweisung eine einzelne Zeichenfolge sein:
Beispiel:
Environment="ONE=one" 'TWO=two two'
ExecStart=/bin/echo $ONE $TWO ${TWO}
Dies wird ausgeführt , / bin / echo mit vier Argumente: one
, two
, two
, und two two
.
Beispiel:
Environment=ONE='one' "TWO='two two' too" THREE=
ExecStart=/bin/echo ${ONE} ${TWO} ${THREE}
ExecStart=/bin/echo $ONE $TWO $THREE
Dies führt zu Echo wird zweimal, das erste Mal mit Argumenten aufgerufen
'one'
, 'two two' too
,
, und das zweite Mal mit Argumenten
one
, two two
, too
.
Ich habe dies mit folgendem Service getestet (Anführungszeichen rund um die gesamte Aufgabe beachten):
[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
Und bekam die gewünschte Ausgabe in 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
Es wäre natürlich einfacher, es EnvironmentFile
stattdessen zu verwenden . Das Ersetzen Environment
durch das Folgende ergab das gleiche gewünschte Ergebnis:
EnvironmentFile=/tmp/foo
Wo /tmp/foo
enthalten (ohne Anführungszeichen):
CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current
CATALINA_OPTS
in einersystemd
Umgebung für Apachetomcat
7.0.61),EnvironmentFile
ist die Verwendung von wirklich der richtige Weg. Vielen Dank!