Я думаю, что ваша проблема связана с пространством в содержимом переменной окружения. Глядя на примеры из документации по 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
действительно - путь. Благодарность!/etc/default
. Там файлы исторически использовались для размещения переменных среды для соответствующих сценариев инициализации./etc/environment
не обрабатывается оболочкой; кроме простого присваивания переменной, ее синтаксис сильно отличается от системного синтаксиса, упомянутого выше, или общего синтаксиса оболочки.