Saya pikir masalah Anda adalah karena ruang dalam isi variabel lingkungan. Melihat contoh-contoh dari systemd docs , tugas harus berupa string tunggal:
Contoh:
Environment="ONE=one" 'TWO=two two'
ExecStart=/bin/echo $ONE $TWO ${TWO}
Ini akan mengeksekusi / bin / bergema dengan empat argumen: one
, two
, two
, dan two two
.
Contoh:
Environment=ONE='one' "TWO='two two' too" THREE=
ExecStart=/bin/echo ${ONE} ${TWO} ${THREE}
ExecStart=/bin/echo $ONE $TWO $THREE
Hasil di gema ini disebut dua kali, pertama kalinya dengan argumen
'one'
, 'two two' too
,
, dan kedua kalinya dengan argumen
one
, two two
, too
.
Saya menguji ini dengan layanan berikut (perhatikan kutipan di sekitar seluruh tugas):
[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
Dan mendapat hasil yang diinginkan di 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
Tentu saja, akan lebih mudah untuk menggunakannya EnvironmentFile
. Mengganti Environment
dengan yang berikut ini memberikan hasil yang diinginkan sama:
EnvironmentFile=/tmp/foo
Di mana /tmp/foo
terkandung (perhatikan kurangnya kutipan):
CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current
CATALINA_OPTS
disystemd
lingkungan untuk Apachetomcat
7.0.61) menggunakanEnvironmentFile
benar - benar adalah cara untuk pergi. Terima kasih!/etc/default
. File di sana secara historis digunakan untuk menempatkan variabel lingkungan untuk skrip init yang sesuai./etc/environment
tidak diproses oleh shell; selain dari penugasan variabel sederhana, sintaksnya sangat berbeda dari sintaks systemd yang disebutkan di atas atau sintaksis shell umum.