"পরিষেবা" - কম্যান্ড এবং পরিবেশের ভেরিয়েবল


8

আমি এমন একটি পরিষেবা শুরু করার চেষ্টা করছি যা একটি vর্ষাপত্রের প্রয়োজন। পরিবর্তনশীল নির্দিষ্ট পথে সেট করা। আমি এই পরিবর্তনশীলটিকে "/etc/profile.d/" এ সেট করেছি। তবে আমি যখন serviceকমান্ডটি ব্যবহার করে এই পরিষেবাটি শুরু করি তখন এটি কার্যকর হয় না।

মানুষের সেবা:

service runs a System V init script in as predictable environment as possible,
removing most environment variables and with current working directory set to /.

সুতরাং এটি serviceআমার ভেরিয়েবলগুলি অপসারণ করছে বলে মনে হচ্ছে । ভেরিয়েবলগুলি অপসারণ থেকে রক্ষা করার জন্য আমি কীভাবে সেট করব। বা এটি আমার কিছু করা উচিত নয়।

আমি আরআর-স্ক্রিপ্টগুলি ব্যবহার করে ম্যানুয়ালি পরিষেবা শুরু করতে পারি , বা এমনকি স্ক্রিপ্টের পাথটিকে হার্ডকোড করতে পারি, তবে serviceকমান্ড দিয়ে কীভাবে এটি ব্যবহার করতে হয় তা জানতে চাই ।

উত্তর:


4

ফেডোরা 16 অনুসারে serviceকেবল গ্রহণযোগ্যতা LANGএবং TERMপরিবেশের ভেরিয়েবলগুলি, সমস্ত কিছু বাতিল হয়ে যায়। সুতরাং, আপনার বর্তমান {CentOS, RHEL the যদি কোনওভাবে ভেরিয়েবল গ্রহণ করে তবে ভবিষ্যতের জন্য প্রস্তুত থাকুন যেখানে এটি আর কাজ করে না।

সুতরাং, হার্ড স্ক্রিপ্ট কোডিং করা এবং / অথবা ডেমন সেটিংস ফাইলটিতে ভেরিয়েবলগুলি সেট আপ করা আপনার পছন্দ হবে।


খারাপ দিকটি হ'ল আমি যতবার অ্যাপ্লিকেশন আপডেট করি
ততবার

ঠিক আছে, "আপডেট প্রায়শই" আজকাল একটি আদর্শ। এটার সাথে বসবাস.
জান্নে পিক্কারাইনেন

6

কনফিগারেশনে কনফিগারেশন সেটিংস স্থাপন করার পরামর্শ দেওয়া হয় /etc/sysconfig/<servicename>যার মধ্যে পরে init স্ক্রিপ্টটি পড়ে।

শুভেচ্ছা সহ

ব্র্যাম


/etc/sysconfig/<servicename>ফাইলটিতে অন্য টিপ হিসাবে আপনি শেল লগইন পরিবেশের অনুকরণ করতে sourceফাইলগুলি লোড করতে ব্যাশ ব্যবহার করতে পারেন /etc/profile.d
অ্যাডাম জেন্ট

2

থেকে man 5 init:

   কাজের পরিবেশ
       প্রতিটি কাজ পরিবেশের সাথে চালানো হয় ইভেন্টগুলি বা আদেশগুলি যা এটি শুরু করেছিল from উপরন্তু, আপনি ডিফল্ট সংজ্ঞায়িত করতে পারেন
       কাজটি যা পরে ওভাররাইড করা হতে পারে এবং নির্দিষ্ট করে যে পরিবেশের ভেরিয়েবলগুলি কাজের জন্য উত্পন্ন ইভেন্টগুলিতে রফতানি করা হয়।

       বিশেষ ইউপি START_EVENTS এনভায়রনমেন্ট ভেরিয়েবলের মধ্যে ইভেন্টটি কাজ শুরু করার তালিকাসমূহ রয়েছে, যদি তা উপস্থিত থাকে না
       কাজটি নিজেই শুরু হয়েছিল।

       তদতিরিক্ত, প্রাক-স্টপ এবং পোস্ট-স্টপ স্ক্রিপ্টগুলি ইভেন্ট বা কমান্ডগুলির পরিবেশের সাথে কাজ করে যা কাজ বন্ধ করে দেয় stopped
       ইউপি START_STOP_EVENTS এনভায়রনমেন্ট ভেরিয়েবলে ইভেন্ট বন্ধ করে দেওয়া ইভেন্টগুলির তালিকা রয়েছে, কাজটি উপস্থিত থাকলে তা উপস্থিত থাকবে না
       নিজেই থামানো হয়েছিল stopped

       সমস্ত চাকরিতেও UPSTART_JOB এবং UPSTART_INSTANCE এনভায়রনমেন্ট ভেরিয়েবল থাকে, এতে কাজের নাম এবং উদাহরণ থাকে।
       এগুলি বেশিরভাগ initctl (8) ইউটিলিটি ডিফল্টরূপে ডায়াল্ট থেকে যে কাজটি ডেকে আনা হয় সেটিতে অভিনয় করতে ব্যবহৃত হয়।

       env KEY [= VALUE]
              একটি ডিফল্ট পরিবেশ পরিবর্তনশীল সংজ্ঞায়িত করে, এর মানটি কাজটি শুরু করার ইভেন্ট বা কমান্ডের দ্বারা ওভাররাইড হয়ে যেতে পারে।
              যদি ´KEY = VALUE´ নির্দিষ্ট করা হয় তবে ভেরিয়েবল KEY মান VALUE দেওয়া হয়। যদি কেবল ´KEY´ দেওয়া হয় তবে মানটি নেওয়া হয়
              init (8) ডেমন এর নিজস্ব পরিবেশ থেকে।

       KEY রফতানি করুন
              প্রারম্ভিক (7), শুরু (7), স্টপিং (7) এবং বন্ধ হয়ে (7) ইভেন্টের জন্য পরিবেশের পরিবর্তনের মান রফতানি করে
              কাজ এবং সমস্ত ফলাফলের ইভেন্টগুলিতে (কেবলমাত্র বর্তমান কাজের সাথে সম্পর্কিত নয়)

সংযোজন grep env /etc/init/*কীভাবে ব্যবহৃত হয় তা দেখতে আপনি করতে পারেন

এটি আমার আউটপুট:

/etc/init/container-detect.conf:env ধারক
/etc/init/container-detect.conf:env LIBVIRT_LXC_UUID
/etc/init/container-detect.conf: # টি হল init এর পরিবেশে "ধারক" পরীক্ষা করা।
/etc/init/container-detect.conf: [-d / proc / vz] && [ -ডি / প্রোক / বিসি] ও & ধারক = ওপেনভেজ
/etc/init/m Mount-debugfs.conf:env MOUNTPOINT = / sys / কার্নেল / ডিবাগ
/etc/init/m Mount-dev.conf:env MOUNTPOINT = / দেব
/etc/init/m Mount-proc.conf:env MOUNTPOINT = / proc
/etc/init/m Mount-tmp.conf:env MOUNTPOINT = / tmp
/etc/init/munin-node.conf:env DAEMON = / usr / sbin / মুনিন-নোড
/etc/init/mysql.conf:env হোম = = ইত্যাদি / মাইএসকিএল
/etc/init/nginx.conf:env DAEMON = / usr / স্থানীয় / nginx / sbin / nginx
/etc/init/nginx.conf:env পিআইডি = / usr / স্থানীয় / nginx / লগ / nginx.pid
/etc/init/procps.conf:env UPSTART_EVENTS =
/etc/init/rc.conf:env INIT_VERBOSE
/etc/init/rc-sysinit.conf:env DEFAULT_RUNLEVEL = 2
/etc/init/rc-sysinit.conf:env RUNLEVEL =
/etc/init/rc-sysinit.conf:env PREVLEVEL =
/etc/init/rc-sysinit.conf:env INIT_VERBOSE
/etc/init/wait-for-state.conf:env TIMEOUT = 30
/etc/init/wait-for-state.conf:env MANUAL_OVERRIDE = "N"
/etc/init/wait-for-state.conf:env WAIT_FOREVER = "এন"
/etc/init/wait-for-state.conf:env WAIT_STATE = "শুরু"
/etc/init/wait-for-state.conf:env TARGET_GOAL = "শুরু"

এবং একটি বিস্তৃত উদাহরণের জন্য সেই স্ক্রিপ্টগুলির কয়েকটি দেখুন। এখানে nginx.conf:

# এনগিনেক্স

বিবরণ "এনজিএনএক্স এইচটিপি ডেমন"
লেখক "ফিলিপ ক্লোস"

চালু করুন (ফাইল সিস্টেম এবং নেট-ডিভাইস-আপ আইএফএসিই = লো)
রানলেভলে থামুন [! 2345]

env DAEMON = / usr / স্থানীয় / nginx / sbin / nginx
env পিআইডি = / usr / স্থানীয় / nginx / লগ / nginx.pid

কাঁটাচামচ আশা
respawn
রেসপনের সীমা 10 5
# ওম কখনও নয়

প্রাক-প্রারম্ভিক স্ক্রিপ্ট
 A ডিমন -t
 যদি [$? -ne 0]
 তাহলে প্রস্থান করবেন $?
 ফাই
শেষ স্ক্রিপ্ট

এক্সিকিউটিভ $ ডেমোন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.