লিনাক্সে Init কমান্ড কিভাবে ব্যবহার করবেন?

Init হল সমস্ত প্রসেসের পিতা বা মাতা। ফাইল / etc / inittab এ সঞ্চিত একটি স্ক্রিপ্ট থেকে প্রসেস তৈরির মূল ভূমিকাটি ( ইনট্যাব (5) দেখুন)। এই ফাইলটি সাধারণত এন্ট্রি রয়েছে যা ব্যবহারকারীরা লগ ইন করতে পারে এমন প্রতিটি লাইনে Getty গুলি বানায় । এটি কোনো নির্দিষ্ট সিস্টেমের জন্য প্রয়োজনীয় স্বায়ত্তশাসিত প্রক্রিয়া নিয়ন্ত্রণ করে।

রান-লেভেল

রানলেভেল সিস্টেমের একটি সফ্টওয়্যার কনফিগারেশন যা শুধুমাত্র একটি নির্বাচিত গ্রুপের প্রসারিত প্রসেসের অনুমতি দেয়। প্রতিটি রানলেভেলের জন্য init দ্বারা উত্পন্ন প্রসেস / etc / inittab ফাইলের মধ্যে সংজ্ঞায়িত করা হয়। Init টি 8 রানলেভেলগুলির এক হতে পারে: 0-6 এবং S অথবা s । রানলেভেলটি একটি বিশেষ ব্যবহারকারীর চালানো টেলিনিটের মাধ্যমে পরিবর্তন করা হয়, যা init- এ যথাযত সিগন্যাল পাঠায়, এটি কোন রানলেভেলকে পরিবর্তন করতে বলে।

রানলেভেল 0 , 1 , এবং 6 টি সংরক্ষিত। রানলেভেল 0 সিস্টেমটি বন্ধ করার জন্য ব্যবহৃত হয়, রানলেভেল 6 সিস্টেমটি পুনরায় বুট করতে ব্যবহৃত হয়, এবং রানলেভেল 1 সিস্টেমকে একক ইউজার মোডে ঢুকতে ব্যবহার করা হয়। Runlevel S প্রকৃতপক্ষে সরাসরি ব্যবহার করা বোঝানো হয় না, রানলেভেল 1 এ প্রবেশ করার সময় চালানো স্ক্রিপ্টগুলির জন্য আরও। এই বিষয়ে আরও তথ্যের জন্য, শাটডাউন (8) এবং ইনিতাব (5) এর ম্যানপোজগুলি দেখুন।

রানলেভেলস 7-9 এছাড়াও বৈধ, যদিও আসলে নথিভুক্ত নয়। এই কারণ "প্রথাগত" ইউনিক্স বৈকল্পিক তাদের ব্যবহার করবেন না। যদি আপনি উদ্বিগ্ন হন, রানলেভেল গুলি S এবং গুলি প্রকৃতপক্ষে একই। অভ্যন্তরীণভাবে তারা একই রানল্যেভেলের জন্য aliases হয়।

বুট প্রক্রিয়া

Initটি কার্নেল বুট ক্রমের শেষ ধাপ হিসাবে প্রয়োগ করা হয়, এটি initdefault টাইপের একটি এন্ট্রি ( inittab (5) দেখুন) কিনা তা দেখার জন্য ফাইল / etc / inittab দেখায়। Initdefault এন্ট্রি সিস্টেমের প্রারম্ভিক রানলভেল নির্ধারণ করে। যদি এমন কোন এন্ট্রি না থাকে (অথবা কোন / etc / inittab এ সব নেই), একটি রান-লেভেল সিস্টেম কনসোলে প্রবেশ করা আবশ্যক।

Runlevel S অথবা s সিস্টেমটি একক ব্যবহারকারী মোডে আনুন এবং / etc / inittab ফাইলের প্রয়োজন নেই। একক ইউজার মোডে, একটি রুট শেল / dev / console এ খোলা হয়।

একক ইউজার মোডে প্রবেশ করার সময়, init দ্বারা /etc/ioctl.save থেকে কনসোলের ioctl (2) অবস্থায় পড়বে যদি এই ফাইলটি অস্তিত্ব না থাকে, init 9600 baud এ লাইনটি শুরু করে এবং CLOCAL সেটিংস সহ। যখন init একক ব্যবহারকারী মোডে যায়, তখন এটি এই ফাইলের কনসোলের ioctl সেটিংস সংরক্ষণ করে যাতে এটি পরবর্তী একক ব্যবহারকারীর সেশনের জন্য পুনরায় ব্যবহার করতে পারে।

প্রথমবারের জন্য একটি মাল্টি ইউজার মোডে প্রবেশ করার সময়, ব্যবহারকারীরা লগ ইন করার আগে ফাইল সিস্টেমগুলি মাউন্ট করার অনুমতিতে init বুটবুটওয়াট এন্ট্রিসমূহ সম্পাদন করে। তারপর রানলেভেলের সাথে মিলিত সমস্ত এন্ট্রিগুলি প্রক্রিয়া করা হয়।

একটি নতুন প্রক্রিয়ায় শুরু করার সময়, প্রথমে ফাইলটি / etc / initscript বিদ্যমান কিনা পরীক্ষা করে। যদি এটি করে তবে এটি প্রক্রিয়াটি শুরু করতে এই স্ক্রিপ্ট ব্যবহার করে।

প্রতিটি সময় একটি শিশু পরিশেষে বন্ধ করে দেয়, init রেকর্ডটি এবং / var / run / utmp এবং / var / log / wtmp- এ মারা গেলে, এই ফাইলগুলি বিদ্যমান থাকলেও

রানলেভেলগুলি পরিবর্তন করা হচ্ছে

এটি সমস্ত প্রসেস নির্দিষ্ট করা হয়েছে পরে, init তার বংশধর প্রসেসের একটি জন্য মরা, একটি পাওয়ারফিল সংকেত জন্য অপেক্ষা করে, বা এটি সিস্টেমের রানলেভেল পরিবর্তন করতে telinit দ্বারা সংকেত না হওয়া পর্যন্ত। যখন উপরের তিনটি অবস্থার মধ্যে একটি এটি / etc / inittab ফাইলে পুনরায় পরীক্ষা করে। নতুন এন্ট্রি কোনও সময়ে এই ফাইলটিতে যোগ করা যেতে পারে। যাইহোক, init এখনও ঘটতে উপরোক্ত তিনটি অবস্থার এক জন্য অপেক্ষা। একটি তাত্ক্ষণিক প্রতিক্রিয়া প্রদানের জন্য, telinit Q বা q কমান্ডটি / etc / inittab ফাইল পুনরায় পরীক্ষা করতে init জাগতে পারে।

Init একক ইউজার মোডে না থাকলে এবং পাওয়ারফেল সংকেত (SIGPWR) পাওয়ার পরে, এটি / etc / powerstatus ফাইলটি পড়বে। এটি তারপর এই ফাইলের বিষয়বস্তু উপর ভিত্তি করে একটি কমান্ড শুরু:

এফ (উন্নয়নে পাঁচ বাধা)

শক্তি ব্যর্থ, ইউ.পি. শক্তি প্রদান করছে। Powerwait এবং powerfail এন্ট্রিগুলি চালান

ঠিক আছে)

ক্ষমতা পুনরুদ্ধার করা হয়েছে, powerokwait এন্ট্রি চালানো।

এল (OW চলাচলের)

শক্তি ব্যর্থ এবং ইউ.পি. এর কম ব্যাটারি রয়েছে। পাওয়ারফেলওন এন্ট্রিগুলি চালান

যদি / etc / powerstatus উপস্থিত না থাকে বা অন্য কিছু থাকে তবে অক্ষর F , O বা L , init আচরণ করবে যেমনটি চিঠিতে F

SIGPWR এবং / etc / powerstatus ব্যবহার নিরুৎসাহিত করা হয়। Init- সাথে ইন্টারঅ্যাক্ট করতে চান এমন কেউ / dev / initctl নিয়ন্ত্রণ চ্যানেল ব্যবহার করতে হবে - এই সম্পর্কে আরো ডকুমেন্টেশনের জন্য sysvinit প্যাকেজের উৎস কোডটি দেখুন।

Init দ্বারা রানলেভেল পরিবর্তন করার অনুরোধ করা হলে এটি নতুন রানলেভেলের মধ্যে অনির্ধারিত সকল প্রসেসের জন্য সতর্কতা সংকেত SIGTERM পাঠায়। এটি SIGKILL সংকেতের মাধ্যমে জোরপূর্বক এই প্রসেসগুলি বন্ধ করে 5 সেকেন্ড অপেক্ষা করে। উল্লেখ্য যে init এই সব প্রক্রিয়া (এবং তাদের বংশধর) একই প্রক্রিয়া গ্রুপ যা মূলত তাদের জন্য নির্মিত init রাখা অনুমান। যদি কোন প্রক্রিয়া তার প্রক্রিয়া গোষ্ঠীর সংযোজন পরিবর্তন করে তবে এটি এই সংকেতগুলি পাবেন না। এই ধরনের প্রসেসগুলি পৃথকভাবে সমাপ্ত করা প্রয়োজন।

Telinit

/ sbin / telinit / sbin / init- এর সাথে সংযুক্ত করা হয় যথাযথ ব্যবস্থা গ্রহণের জন্য এটি একটি চরিত্রগত যুক্তি এবং সিগন্যালগুলি গ্রহণ করে। নিম্নলিখিত আর্গুমেন্টগুলি telinit এর নির্দেশাবলী হিসাবে কাজ করে:

0 , 1 , , 3 , 4 , 5 বা 6

নির্দিষ্ট রান স্তরে সুইচ করতে init বলে।

, বি , সি

runlevel a , b বা c এগুলি শুধুমাত্র / etc / inittab ফাইল এন্ট্রিগুলিতে প্রক্রিয়া করার জন্য init বলুন।

প্রশ্ন বা q

/ etc / inittab ফাইল পুনরায় পরীক্ষা করার জন্য init বলুন।

এস বা গুলি

একক ব্যবহারকারী মোডে স্যুইচ করতে init বলুন।

ইউ বা ইউ

নিজেকে পুনঃপ্রতিষ্ঠা (রাষ্ট্র সংরক্ষণ) init বলে। / Etc / inittab ফাইলের পুনরায় পরীক্ষা করা হবে না। চালান স্তর Ss12345 এর একটি হওয়া উচিত, অন্যথায় অনুরোধটি চুপি চুপি উপেক্ষা করা হবে।

telinit এছাড়াও এটি SIGTERM এবং SIGKILL সংকেত প্রসেস পাঠানোর মধ্যে অপেক্ষা করা উচিত কতদিন init বলতে পারেন। ডিফল্ট 5 সেকেন্ড, কিন্তু এটি -t সেকেন্ড বিকল্পের সাথে পরিবর্তিত হতে পারে।

টেলিনিট কেবলমাত্র যথাযথ সুবিধা সহ ব্যবহারকারীদের দ্বারা চালানো যেতে পারে।

Init বাইনারি চেক এটি init বা telinit কিনা তার প্রক্রিয়া আই ; প্রকৃত init এর প্রক্রিয়া আইডি সর্বদা 1 । এই থেকে এটি অনুসরণ করে যে telinit কল করার পরিবর্তে একটি শর্টকাট হিসাবে পরিবর্তে init ব্যবহার করতে পারেন।