জীবিত রাখার আদর্শ বা সর্বোত্তম উপায়টি init.d দ্বারা শুরু হয়েছিল


14

আমি একটি init.dশেল স্ক্রিপ্ট দ্বারা ডেমোন শুরু করা জীবিত রাখতে একটি আদর্শ উপায় বা সেরা অনুশীলনের সন্ধান করছি ।

বা আরও ভাল, এটিকে সরাসরি বাঁচিয়ে রাখার কোনও উপায় আছে /etc/init.dকি?

বিশেষত, আমার কাছে ডিটিএনডি নামে একটি ডিমন রয়েছে এবং অসীম লুপ রয়েছে যা অপ্রত্যাশিত সমাপ্ত প্রক্রিয়াটির সন্ধান করে, যদি সেখানে থাকে তবে ডিমন তাদের আবার জাগিয়ে তোলে। এছাড়াও, আমি কোনও প্রদত্ত সিস্টেম ব্যবহারকারীর দ্বারা প্রসেসটি চালিয়ে যাওয়ার জন্য স্টার্ট-স্টপ-ডেমন সরঞ্জামটি ব্যবহার করি।

আমি এই dtnd ডিমনটি শুরু থেকে চালাতে চাই। এই আচরণটি অর্জন করার জন্য আমি একটি init.d স্ক্রিপ্ট তৈরি করেছি যা স্টার্ট, স্টপ এবং স্থিতি কমান্ড ব্যবহার করে ডিটিএনডি ফাইলটিকে "মোড়ানো" করে।

আমার 2 টি প্রশ্ন রয়েছে যা আমি সমাধান করতে চাই:

  1. Init.d শেল স্ক্রিপ্ট থেকে কিছু প্রক্রিয়া বাঁচিয়ে রাখার কোনও উপায় আছে কি ? একটি স্ট্যান্ডার্ড / সেরা উপায় অনুশীলন?

  2. অসীম লুপের সাহায্যে কোনও প্রক্রিয়া বাঁচিয়ে রাখার পরামর্শ দেওয়া হয়? আমি অনুমান করি যে এটি respawnঅর্জন করতে কিছু কমান্ড ব্যবহার করা ভাল । এটা সঠিক?

আমি respawnকমান্ডের অস্তিত্ব সম্পর্কে জানি । আমি মনে করি এটি আমার প্রয়োজন তবে আমি /etc/init.d/এবং এর মধ্যে ওয়ার্কফ্লো বুঝতে পারি না /etc/init। আমাকে কি কেউ সাহায্য করতে পারবেন?

নোট আমি তন্ন তন্ন ভুঁইফোড় inittab ফাইল আছে না যে (আমি শুধুমাত্র ব্যবহারের জন্য অনুমোদিত করছি /etc/init, /etc/init.d, cronএবং সিস্টেম টুলস start-stop-daemon। আমি বলতে চাচ্ছি, ডিফল্ট হিসাবে শুধুমাত্র টুলস)

আপনার সময় জন্য আপনাকে অনেক ধন্যবাদ!


উত্তর:


13

ডেবিয়ান শেষ পর্যন্ত সিস্টেমেড থাকবে, সুতরাং এটি লিনাক্স সিস্টেমে সিস্টেমেড ব্যবহার করার পদ্ধতি (এবং অনেকগুলি ইতিমধ্যে করেছে; আপনি বিতরণগুলি স্যুইচিং বিবেচনা করতে পারেন)।

সিস্টেমড স্বয়ংক্রিয়ভাবে আপনার জন্য পরিষেবাটি বাঁচিয়ে রাখতে পারে; অন্য কোনও সরঞ্জামের প্রয়োজন নেই। কেবল এটি নিশ্চিত করুন যে Restart=alwaysসেবার পরিষেবার ফাইলের [Service]বিভাগে সেট করা আছে ।

# vi /etc/systemd/system/dtnd.service

[Service]
Restart=always
#...everything else...

আরও জটিল পরিস্থিতিগুলির জন্য আরও বেশ কয়েকটি বিকল্প উপলব্ধ।


2
ভবিষ্যতে আরও নমনীয় বিকল্পগুলি দেখায়, এটি কি বর্তমান পরিবেশ / অবস্থার যত্ন নিবে? একটি ফোকলফিট বিতরণ পরিবর্তন / আপগ্রেডের তুলনায় কোনও সরঞ্জাম ইনস্টল করা সর্বনিম্ন-প্রতিরোধের পথ বলে মনে হচ্ছে।
ew

@ নতুন এটি নির্ভর করে দেবিয়ান হুইজি থেকেই সিস্টেমড করেছে তবে এটি ডিফল্ট উদ্যোগ ছিল না। এটি জেসি থেকে ডিফল্ট হওয়া উচিত। এবং যেহেতু আমাদের ব্যবহারকারী উত্তরটি গ্রহণ করেছেন, আমি অনুমান করি যে তিনি ইতিমধ্যে অন্য কারণে (বা এটি ইনস্টল করার অনুমতি পেয়েছিলেন) জন্য সিস্টেমড ব্যবহার করছেন using
মাইকেল হ্যাম্পটন

systemdমনে হয় init.dস্ক্রিপ্ট & বেসটি চালু আছে*.service
yurnchen

2
সরাসরি সম্পাদনার পরিবর্তে নিরাপদটি ব্যবহার করুন এবং systemctl edit myserviceতারপরে আমার systemctl daemon-reloadসার্ভিসটি পুনরায় চালু করুন।
পাবলো এ

@ পাবলোবিয়ানচি যদি আপনি কোনও বিদ্যমান পরিষেবার ইউনিটকে ওভাররাইড করে থাকেন তবে একটি ওভাররাইড তৈরি করা ভাল। যদি আপনি স্ক্র্যাচ থেকে কোনও ইউনিট তৈরি করছেন, যেমন ওপি করেছে, তবে এটি অর্থহীন।
মাইকেল হ্যাম্পটন

3

আপনি এটি /etc/inittabদিয়ে যুক্ত করতে পারেন respawn:

d1:2345:respawn:/path/to/your/first_daemon arg1 arg2
d2:2345:respawn:/path/to/your/second_daemon arg1 arg2

এটি একটি নোংরা হ্যাক, তবে আমি এটি অতীতে পুরানো sysv-init সিস্টেমে সফলতার সাথে ব্যবহার করেছি।


কিন্তু পটভূমিতে চালানোর জন্য ডেমনগুলি ইউটিলি ক্যাল সেটসিড () এবং কাঁটাচামচ () না?
11:44

ধন্যবাদ! যেমন আপনি বলেছেন এটি একটি নোংরা হ্যাক তবে এটি কাজ করে। যাইহোক আমি systemd ব্যবহার পছন্দ করি। এখন আমি এর অস্তিত্ব সম্পর্কে জানি।
অ্যাড্রিয়ান আন্তুনেজ

এটি RHEL6 এ কাজ করে না। রেসপন ইউটিলিটি উপলব্ধ বলে মনে হচ্ছে না।
ডিজিডিউফ

2

ঠিক আছে, এটি মূল কারণগুলির মধ্যে একটি, কেন ডেবিয়ান সিস্টেমডে চলেছে।

sysvinit (/etc/init.d) কোনও পরিষেবা নিচে / সাড়া না দিলে সনাক্ত করতে সক্ষম নয়। এর অর্থ আপনি যদি এই পরিষেবাগুলি আর কাজ না করেন তবে আপনাকে এই পরিষেবাগুলি পর্যবেক্ষণ করতে হবে এবং আরও বাড়িয়ে তুলতে হবে।

সম্ভবত সবচেয়ে সহজ কাজটি হ'ল সিস্টেমড (আরএইচইএল 7 এ ডিফল্ট, পরবর্তী ডিবিয়ান এবং উবুন্টু এলটিএসে ডিফল্ট হবে), উপস্টার্ট (আরএইচইল 6, উবুন্টু 12.04 এবং 14.04 এ ডিফল্ট), ডেমোনটোলেস (যেমন উল্লিখিত, ডিভেলোপড দ্বারা চিহ্নিত) ডিজেবি) বা অন্য কিছু।

একটি পরিষেবা বাঁচিয়ে রাখার কাজ করা sysvinit এর পিটা হবে।


1

সেরা অনুশীলনটি হ'ল আপনার ডিমনরা প্রথম স্থানে না থামেন তা নিশ্চিত করা।

ব্যর্থ যে আপনি ডিজেবির ডেমনটোলগুলি একবার দেখতে চান


3
অবশ্যই সেরা অনুশীলনটি হ'ল এটি নিশ্চিত করা যে আমার ডেমনগুলি থামবে না। তবে প্রচুর অ্যাপ্লিকেশন রয়েছে যেগুলি যদি অ্যাপা -2, মাইএসকিএল, সাম্বা, পালসওদিও-এর মতো-যদি-স্টপ-ওয়েক-মি পদ্ধতির অনুসরণ করে তবে আমি ডিমনটোলগুলি খুঁজছি এবং এটি একটি ভাল পদ্ধতির বলে মনে হচ্ছে। দুর্ভাগ্যক্রমে, আমাকে বাহ্যিক সরঞ্জামগুলি ইনস্টল করার অনুমতি নেই। আমার এটি করা দরকার বাশ স্ক্রিপ্টিং বা স্টার্ট-স্টপ-ডেমন এবং init.d কনফিগার ব্যবহার করে।
অ্যাড্রিয়ান আন্তুনেজ

1

আমার কাছে মানক পদ্ধতির জন্য এটি মনিট ইউটিলিটিটি ব্যবহার করা।

আপনি যদি মনিতের মতো কিছু লিখেছেন এবং এটি চলছে কিনা তা নিশ্চিত করার চেষ্টা করছেন বা আপনার তৈরি ডেমন দেখার জন্য যদি আপনার কিছু প্রয়োজন হয় তবে আমি আপনার বর্ণনা থেকে বেশ কিছু বলতে পারি না।


1
হাই ইয়ে হোয়াইট, আমাকে নিশ্চিত করতে হবে যে আমার অ্যাপ্লিকেশনটি চলছে। দুর্ভাগ্যক্রমে, আমাকে বাহ্যিক সরঞ্জামগুলি ইনস্টল করার অনুমতি নেই। আমার এটি করা দরকার বাশ স্ক্রিপ্টিং বা স্টার্ট-স্টপ-ডেমন এবং init.d কনফিগার ব্যবহার করে।
অ্যাড্রিয়ান আন্তুনেজ

2
@ অ্যাড্রিয়েনআন্টেনিজ আপনার কাজটি করার জন্য প্রয়োজনীয় সরঞ্জামগুলি ইনস্টল করার অনুমতি না থাকলে আপনার যত তাড়াতাড়ি সম্ভব সমস্যাটি সমাধান করা উচিত।
মাইকেল হ্যাম্পটন

@ অ্যাড্রিয়েনআন্টেনিজ আপনি "স্ট্যান্ডার্ড" চেয়েছিলেন। মনিত বেশ সুপরিচিত / সমাদৃত। আপনি "সেরা" চেয়েছিলেন ... আপনার প্রতিবন্ধকতা রাজনৈতিক হিসাবে বেশি। আপনাকে সফ্টওয়্যার ইনস্টল করার অনুমতি দেওয়া হবে না কেন ?
ew

1
এটি যদি আপনি এটি করতে চান তা করে তবে এটি একটি অপ্রয়োজনীয় সরঞ্জাম বা নির্ভরতা নয় ।
ew

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