SysV, Upstart এবং systemd init স্ক্রিপ্ট সহাবস্থান


15

আমার সিস্টেমে (১.0.০৪) ফাইলগুলি রয়েছে /lib/systemd/system/network-manager.serviceএবং /etc/init.d/network-managerউদাহরণস্বরূপ।

আমি বুঝতে পারি না কীভাবে (এবং কেন) এটি কাজ করে। আমি সর্বদা নেটওয়ার্ক ম্যানেজার দ্বারা পুনরায় চালু করি sudo service network-manager restart। এই জগাখিচুড়ি কোনভাবে সিস্টেমড করা উচিত নয়? এটি এখনও কাজ বলে মনে হচ্ছে।

কেন service --status-allসব ধরণের পরিষেবাগুলির তালিকা করে ? 16.04 আপস্টার্টের পরিবর্তে সিস্টেমেড ব্যবহার করা উচিত নয়?

কেউ দয়া করে ব্যাখ্যা করুন যে এই সহাবস্থানটি কীভাবে কাজ করে।

উত্তর:


17

একবারে একটি মাত্র init সিস্টেম সক্রিয় হতে পারে। 16.04 এ, এটি সিস্টেমড system

একাধিক init সিস্টেমের জন্য ফাইল সহ বেশ কয়েকটি প্যাকেজ পাঠানো হয়, যাতে তারা বিভিন্ন ওএসে একাধিক init সিস্টেমের সাহায্যে পরিচালনা করতে পারে। উবুন্টুতে, কখনও কখনও একসাথে একসাথে ব্যবহার না করা সত্ত্বেও, একাধিক init সিস্টেমগুলির স্ক্রিপ্টগুলি ইনস্টল হয়ে যায়।

নতুন init সিস্টেমগুলি পুরানোগুলির সাথে সামঞ্জস্য বজায় রাখার চেষ্টা করে। বিশেষত, সিস্টেমড আপস্টার্ট এবং SysV init স্ক্রিপ্ট উভয়ের সাথে সামঞ্জস্য বজায় রাখার চেষ্টা করে।

আপনি "init.d" স্ক্রিপ্টের ক্ষেত্রে উল্লেখ করেছেন, এটি একটি "SysV" init স্ক্রিপ্ট, আপস্টার্ট স্ক্রিপ্ট নয়। এছাড়াও, "SysV" init স্ক্রিপ্টগুলি কেবল "/etc/rc5.d" এর মতো ডিরেক্টরিতে সিমলিং করা থাকলে বুটে শুরু হবে। আপনি যে নেটওয়ার্ক ম্যানেজার পাবেন না একটি সিমবলিক লিঙ্ক সেখানে ইনস্টল করা নেই।

systemdপুরানো "SysV" টিআইপি স্ক্রিপ্টগুলি কীভাবে পরিচালনা করে তা বুঝতে , সিস্টেমড কীভাবে /etc/init.d স্ক্রিপ্ট ব্যবহার করে?

এখন, "সার্ভিস নেটওয়ার্ক-ম্যানেজার পুনঃসূচনা" দিয়ে এটি কেন নেটওয়ার্ক ম্যানেজারটিকে পুনরায় চালু করতে কাজ করে এমন প্রশ্নের উত্তর দিতে। serviceকমান্ড উভয় ভুঁইফোড় স্ক্রিপ্ট এবং SysV init সংক্রান্ত স্ক্রিপ্টের ব্যবহার করা হয়, সাবেক করা উচিত ছিল। নেটওয়ার্ক ম্যানেজারের 16.04 এ একটি আপস্টার্ট স্ক্রিপ্ট ইনস্টল করা আছে /etc/init/network-manager.conf

আপনি যদি আউটপুট পর্যালোচনা করেন তবে sudo strace service network-manager restartকী ঘটছে তা আপনি উপলব্ধি করতে পারেন। প্রথমে আউটপুট প্রদর্শন করা systemctlহয় যা ডাকা হচ্ছে, তা নির্দেশ করে যে কমান্ডটি সিস্টেমডে পুনর্নির্দেশ করা হচ্ছে। প্রথমে, এটি খোলার অল্পক্ষণের পরে /usr/bin/service, আপনি এটি শেল স্ক্রিপ্ট হিসাবে ফাইলটিতে পড়া শুরু করতে পারেন:

open("/usr/sbin/service", O_RDONLY)     = 3
...
read(10, "#!/bin/sh\n\n#####################"..., 8192) = 8192

এখন যেহেতু আমরা জানি যে serviceএটি একটি শেল স্ক্রিপ্ট, আমরা এর উত্স কোডটি পরীক্ষা করে দেখতে পারি। উত্স কোডে, আমরা এটি is_systemdসনাক্ত এবং সেট করে খুঁজে পাই । সিস্টেমযুক্ত ক্ষেত্রে, আপনি দেখতে পাচ্ছেন যে কমান্ডটি পুনরায় লিখিত হবে systemctl restart network-manager

সুতরাং তিনটি init সিস্টেমের সহাবস্থান রয়েছে এবং কিছুটা সামঞ্জস্য রয়েছে, সেখানে জটিলতার স্তর রয়েছে। যা চলছে তার জটিলতা কমাতে, সিস্টেমড ইউনিট ফাইলগুলি এবং systemctlপরিষেবাগুলি পরিচালনা করার জন্য সরঞ্জামটি ব্যবহার করা ভাল ।

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