Penso che il tuo problema sia dovuto allo spazio nel contenuto della variabile d'ambiente. Guardando gli esempi dai documenti systemd , un'assegnazione dovrebbe essere una singola stringa:
Esempio:
Environment="ONE=one" 'TWO=two two'
ExecStart=/bin/echo $ONE $TWO ${TWO}
Questo eseguirà / bin / echo con quattro argomenti: one
, two
, two
, e two two
.
Esempio:
Environment=ONE='one' "TWO='two two' too" THREE=
ExecStart=/bin/echo ${ONE} ${TWO} ${THREE}
ExecStart=/bin/echo $ONE $TWO $THREE
Questo comporta echo essere chiamato due volte, la prima volta con argomenti
'one'
, 'two two' too
,
, e la seconda volta con argomenti
one
, two two
, too
.
Ho provato questo con il seguente servizio (notare le virgolette intorno all'intero incarico):
[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
E ottenuto l'output desiderato 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
Certo, sarebbe invece più semplice da usare EnvironmentFile
. Sostituendo il Environment
con quanto segue si ottiene lo stesso risultato desiderato:
EnvironmentFile=/tmp/foo
Dove /tmp/foo
contenuto (notare la mancanza di virgolette):
CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current
CATALINA_OPTS
insystemd
ambiente per Apachetomcat
7.0.61) usareEnvironmentFile
davvero è la strada da percorrere. Grazie!