এনভায়রনমেন্ট সিস্টেমযুক্ত নির্দেশাবলী = কীভাবে নির্দিষ্ট করবেন?


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}

এই চালানো হবে / বিন / চার আর্গুমেন্ট সহ echo: 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_OPTSsystemdএ্যাপাচি পরিবেশ tomcat7.0.61) ব্যবহার EnvironmentFileসত্যিই যেতে উপায়। ধন্যবাদ!
কার্ল রিখটার

উবুন্টুতে এনভায়রনমেন্ট ফাইল রাখার জন্য স্ট্যান্ডার্ড / কনভেনশন ডিরেক্টরিটি কী? অন্যান্য সিস্টেমে আমি / etc / sysconfig /
দাভোস

1
@ দাওস একটি যুক্তিসঙ্গত জায়গা হবে /etc/default। সেখানকার ফাইলগুলি initতিহাসিকভাবে সংশ্লিষ্ট স্ক্রিপ্টগুলির সাথে সংশ্লিষ্ট পরিবেশের ভেরিয়েবল স্থাপনের জন্য ব্যবহৃত হয়েছে।
মুরু

আমার এই ফাইলটি ইতিমধ্যে আমার সিস্টেমে / ইত্যাদি / পরিবেশে রয়েছে যার মধ্যে একটি PATH ভেরিয়েবল রয়েছে, সেগুলি সংবেদনশীল হতে পারে?
দাভোস

1
@ ডেভস যা সিস্টেমভিত। ব্যবহারিকভাবে প্রতিটি প্রক্রিয়াটির জন্য ভেরিয়েবল সেট করার কোনও সমস্যা না থাকলে অবশ্যই নিশ্চিত। নোট যে /etc/environmentশেল দ্বারা প্রক্রিয়া করা হয় না; সরল ভেরিয়েবল অ্যাসাইনমেন্ট বাদে, এর সিনট্যাক্স উপরে উল্লিখিত সিস্টেমড সিনট্যাক্স বা সাধারণ শেল সিনট্যাক্সের থেকে খুব আলাদা।
মুরু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.