एक पर्यावरण systemd निर्देश युक्त = कैसे निर्दिष्ट करें?


20

मैं एक Environment systemdनिर्देश युक्त निर्दिष्ट करना चाहता हूं =, जैसे

Environment=CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current

और त्रुटि प्राप्त करें

[/lib/systemd/system/archiva.service:10] Invalid environment assignment, ignoring: CATALINA_OPTS=-Dappserver.home\=/var/lib/archiva/apache

में है journalctl -xe। मैंने बिना किसी सफलता के साथ "और साथ 'भागने की कोशिश की । यह अनिर्दिष्ट लगता है।=\

जवाबों:


40

मुझे लगता है कि आपकी समस्या पर्यावरण चर की सामग्री में जगह के कारण है। सिस्टमड डॉक्स से उदाहरणों को देखते हुए , एक असाइनमेंट को एक स्ट्रिंग होना चाहिए:

उदाहरण:

Environment="ONE=one" 'TWO=two two'
ExecStart=/bin/echo $ONE $TWO ${TWO}

इस पर अमल होगा / bin / चार तर्क के साथ गूंज: 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अपाचे के लिए पर्यावरण tomcat7.0.61) का उपयोग EnvironmentFileवास्तव में जाने का रास्ता है। धन्यवाद!
कार्ल रिक्टर

उबंटू पर एक पर्यावरणफाइल रखने के लिए मानक / सम्मेलन निर्देशिका क्या है? अन्य प्रणालियों पर मैंने
Davos

1
@ डावोस एक उचित स्थान होगा /etc/default। वहाँ फ़ाइलों को ऐतिहासिक रूप से इसी init स्क्रिप्ट के लिए पर्यावरण चर रखने के लिए इस्तेमाल किया गया है।
मुरु

मेरे पास यह फ़ाइल पहले से ही मेरे सिस्टम / etc / वातावरण पर है जिसमें एक PATH चर है, जो कि समझदार होगा?
दावोस

1
@Davos यह प्रणालीबद्ध है। यदि व्यावहारिक रूप से हर प्रक्रिया के लिए सेट किए जा रहे चर के साथ कोई समस्या नहीं है, तो निश्चित रूप से। ध्यान दें कि /etc/environmentएक शेल द्वारा संसाधित नहीं किया गया है; सरल चर असाइनमेंट से अलग, इसका सिंटैक्स सिस्टमड सिंटैक्स से ऊपर या सामान्य शेल सिंटैक्स से बहुत अलग है।
मुरु
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.