Creo que su problema se debe al espacio en el contenido de la variable de entorno. Mirando los ejemplos de los documentos de systemd , una asignación debe ser una sola cadena:
Ejemplo:
Environment="ONE=one" 'TWO=two two'
ExecStart=/bin/echo $ONE $TWO ${TWO}
Esto ejecutará / bin / echo con cuatro argumentos: one
, two
, two
, y two two
.
Ejemplo:
Environment=ONE='one' "TWO='two two' too" THREE=
ExecStart=/bin/echo ${ONE} ${TWO} ${THREE}
ExecStart=/bin/echo $ONE $TWO $THREE
Este resultado en eco siendo llamados dos veces, la primera vez con argumentos
'one'
, 'two two' too
,
, y la segunda vez con argumentos
one
, two two
, too
.
Probé esto con el siguiente servicio (tenga en cuenta las citas de toda la tarea):
[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
Y obtuvo la salida deseada en 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
Por supuesto, sería más fácil de usar EnvironmentFile
. Reemplazar el Environment
con el siguiente dio el mismo resultado deseado:
EnvironmentFile=/tmp/foo
Donde esté /tmp/foo
contenido (tenga en cuenta la falta de comillas):
CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current
CATALINA_OPTS
en elsystemd
entorno de Apachetomcat
7.0.61), usarEnvironmentFile
realmente es el camino a seguir. ¡Gracias!/etc/default
. Los archivos allí se han utilizado históricamente para colocar variables de entorno para los scripts de inicio correspondientes./etc/environment
no es procesado por un shell; aparte de la asignación de variables simples, su sintaxis es muy diferente de la sintaxis systemd indicada anteriormente o la sintaxis general de shell.