एक पर्यावरण 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.