এটা সব লিনাক্স প্রসেসের পিতা-মাতা। কম্পিউটারটি বুট হওয়ার সময় এটি প্রথম প্রক্রিয়া, এবং সিস্টেমটি বন্ধ না হওয়া পর্যন্ত এটি চালায়। এটি অন্য সব প্রক্রিয়া পূর্বপুরুষ।
এর প্রাথমিক ভূমিকাটি ফাইল / etc / inittab এ সংরক্ষিত স্ক্রিপ্ট থেকে প্রসেস তৈরি করা। এই ফাইলটি সাধারণত এন্ট্রিগুলি সঞ্চয় করে যা ব্যবহারকারীরা লগ ইন করতে প্রতিটি লাইনে স্পন গেটস পেতে পারে। এটি কোনও নির্দিষ্ট সিস্টেমের দ্বারা স্বতন্ত্র প্রক্রিয়াগুলির জন্যও স্বতন্ত্র প্রক্রিয়াগুলিকে নিয়ন্ত্রণ করে।
রান-লেভেল
একজন রান-লেভেল সিস্টেমের একটি সফ্টওয়্যার কনফিগারেশন যা প্রসেসের একটি নির্বাচিত গ্রুপকে কার্যকর করার অনুমতি দেয়। এই রানলভেলগুলির প্রত্যেকটির জন্য Init দ্বারা প্রসারিত প্রক্রিয়াগুলি / etc / inittab ফাইলে সংজ্ঞায়িত করা হয়। Init আট রানলভলে এক হতে পারে: 0 থেকে 6 এবং এস বা এস। একটি বিশেষ ব্যবহারকারী টেলিনিট চালানোর মাধ্যমে রানলেভেল পরিবর্তন হয়, যা ইনিটকে উপযুক্ত সংকেত প্রেরণ করে, এটি কোন রানেলভেলকে পরিবর্তন করতে বলে।
রানলেভেল 0, 1, এবং 6 সংরক্ষিত। রানলভেল 0টি সিস্টেমটি বন্ধ করতে ব্যবহৃত হয়, রানলভেল 6টি সিস্টেমটি পুনরায় বুট করার জন্য ব্যবহার করা হয় এবং রানলভেল 1টি একক-ব্যবহারকারী মোডে সিস্টেমটি পেতে ব্যবহৃত হয়। রানলেভেল এস সরাসরি ব্যবহার করা হয় না বরং রেনেলভেল 1 এ প্রবেশ করার সময় নির্বাহিত স্ক্রিপ্টগুলির দ্বারা বোঝানো হয়।
রানলভেলস 7 থেকে 9 এছাড়াও বৈধ, যদিও নথিভুক্ত নন কারণ "ঐতিহ্যগত" ইউনিক্স রূপগুলি তাদের ব্যবহার করে না। Runlevels এস এবং গুলি একই। অভ্যন্তরীণভাবে, তারা একই রানলেভেলের জন্য উপনাম।
বুট প্রক্রিয়া
কার্নেল বুট ক্রমটির শেষ ধাপ হিসাবে Init কে চালিত করার পরে, এটি টাইপের জন্য একটি আইট্রি আছে কিনা তা দেখতে / etc / inittab ফাইলটি সন্ধান করে initdefault । Initdefault এন্ট্রি সিস্টেমের প্রাথমিক রানলেভেল নির্ধারণ করে। যদি এ ধরনের এন্ট্রির (অথবা কোনও / etc / inittab সব থাকে না), একটি রানলভেল সিস্টেম কনসোলে প্রবেশ করা আবশ্যক।
রানলেভেল এস বা গুলি সিস্টেমকে একক-ব্যবহারকারী মোডে নিয়ে যায় এবং একটি / etc / inittab ফাইলের প্রয়োজন হয় না। একক-ব্যবহারকারী মোডে, / dev / কনসোলে একটি রুট শেল খোলা হয়।
একক-ব্যবহারকারী মোডে প্রবেশ করার সময়, init কনসোলের ioctl অবস্থাগুলি /etc/ioctl.save থেকে পাঠ করে। এই ফাইলটি বিদ্যমান না থাকলে, init 9600 baud এ এবং ক্লোকাল সেটিংসের সাথে লাইনটি আরম্ভ করে। যখন init একক-ব্যবহারকারী মোড ছেড়ে যায়, তখন এটি এই ফাইলটিতে কনসোলের ioctl সেটিংস সংরক্ষণ করে যাতে এটি পরবর্তী একক-ব্যবহারকারী সেশনের জন্য পুনরায় ব্যবহার করতে পারে।
প্রথমবার মাল্টিউসার মোডে প্রবেশ করার সময়, Init বুট ও বুটওয়াট এন্ট্রি সঞ্চালন করে ব্যবহারকারীর লগ-ইন করার পূর্বে ফাইল সিস্টেমগুলি মাউন্ট করার মঞ্জুরি দেয়। তারপরে, রানলেভেলের সাথে মিলে যাওয়া সকল এন্ট্রি প্রক্রিয়া করা হয়।
একটি নতুন প্রক্রিয়া শুরু করার সময়, ইনিট প্রথমে ফাইল / etc / initscript উপস্থিত কিনা তা পরীক্ষা করে। যদি এটি হয়, এটি প্রক্রিয়া শুরু করার জন্য এই স্ক্রিপ্ট ব্যবহার করে।
প্রতিবার যখন কোনও শিশু বন্ধ করে দেয়, ইনিটটি এই ফাইলগুলি উপস্থিত থাকলে এবং / var / run / utmp এবং / var / log / wtmp এ মারা যাওয়ার কারণটি রেকর্ড করে।
রানলেভেল পরিবর্তন
এটি নির্দিষ্ট সমস্ত প্রসেসগুলিকে স্পন করার পরে, ইনিটটি তার উত্তরাধিকারী প্রক্রিয়ার একটিতে মারা যেতে পারে, একটি পাওয়ারফিল সংকেত, বা এটি Telinit দ্বারা সিস্টেমের রানলেভেল পরিবর্তন করার জন্য সংকেত দেওয়া না হওয়া পর্যন্ত অপেক্ষা করে। এই তিনটি অবস্থার মধ্যে একটি ঘটলে, এটি / etc / inittab ফাইলটি পুনরায় পরীক্ষা করে। নতুন এন্ট্রি যে কোনো সময় এই ফাইল যোগ করা যেতে পারে। যাইহোক, init এখনও উপরের তিনটি অবস্থার এক জন্য অপেক্ষা করে। একটি তাত্ক্ষণিক প্রতিক্রিয়া প্রদান করার জন্য, Telinit Q বা q কমান্ডটি ইটকে / etc / inittab ফাইলে পুনরায় পরীক্ষা করতে জাগতে পারে।
যদি Init একক-ব্যবহারকারী মোডে না থাকে এবং একটি পাওয়ারফিল সংকেত (SIGPWR) পায় তবে এটি ফাইল / etc / powerstatus ফাইলটি পড়ে। তারপর এই ফাইলের বিষয়বস্তু উপর ভিত্তি করে একটি কমান্ড শুরু হয়:
- এফ (উন্নয়নে পাঁচ বাধা)বিদ্যুৎ ব্যর্থ হচ্ছে, ইউপিএস শক্তি সরবরাহ করছে। পাওয়ারওয়াট এবং পাওয়ারফিল এন্ট্রি এক্সিকিউট করুন।
- ঠিক আছে): ক্ষমতা পুনরুদ্ধার করা হয়েছে, powerokwait এন্ট্রি চালানো।
- এল (OW চলাচলের): শক্তি ব্যর্থ হয়, এবং ইউপিএস কম ব্যাটারি আছে। Powerfailnow এন্ট্রি এক্সিকিউট করুন।
যদি / etc / powerstatus উপস্থিত না থাকে অথবা অক্ষর F, O, বা L অক্ষর ছাড়া অন্য কিছু থাকে তবে Init আচরণ করে অক্ষরটি F.
SIGPWR এবং / etc / powerstatus ব্যবহার নিরুৎসাহিত করা হয়। যে কেউ ইনিটের সাথে যোগাযোগ করতে চায় সেটি / dev / initctl নিয়ন্ত্রণ চ্যানেল ব্যবহার করতে হবে।
যখন ইনিটকে রেনেলভেল পরিবর্তন করার অনুরোধ করা হয়, তখন এটি নতুন রেনেলভেলে অনির্ধারিত সমস্ত প্রক্রিয়াগুলিতে SIGTERM কে সতর্কতা সংকেত পাঠায়। এটি SIGKILL সিগন্যাল ব্যবহার করে জোরপূর্বক এই প্রক্রিয়াগুলিকে শেষ করার পূর্বে পাঁচ সেকেন্ড অপেক্ষা করে। উল্লেখ্য যে Init অনুমান করে যে এই সমস্ত প্রক্রিয়া এবং তাদের উত্তরসূরি একই প্রক্রিয়া গোষ্ঠীতে রয়েছে যা মূলত তাদের জন্য তৈরি করা হয়েছে। কোন প্রক্রিয়া তার প্রক্রিয়া গ্রুপ অনুমোদন পরিবর্তন করে, এটি এই সংকেত প্রাপ্ত হয় না। যেমন প্রসেস আলাদাভাবে বাতিল করা প্রয়োজন।
Telinit
টেলিনিট / sbin / init লিঙ্কযুক্ত। এটি যথাযথ পদক্ষেপ সম্পাদনের জন্য একটি অক্ষর যুক্তি এবং সংকেত ইনট নেয়। নিম্নলিখিত আর্গুমেন্ট Telinit নির্দেশাবলী হিসাবে কাজ করে:
- 0, 1, 2, 3, 4, 5, বা 6: নির্দিষ্ট রান স্তর স্যুইচ করতে Init বলুন।
- একটি, বি, সি: ইনটকে কেবলমাত্র যারা / etc / inittab ফাইল এন্ট্রিগুলি রানলেভেল A, B, অথবা C তে প্রক্রিয়াকরণ করতে বলুন।
- প্রশ্ন বা q: ইনটকে / etc / inittab ফাইলটি পুনরায় পরীক্ষা করতে বলুন।
- এস বা এস: একক-ব্যবহারকারী মোডে স্যুইচ করতে Init কে বলুন।
- আপনি নাকি ইউ: নিজেকে পুনরায় চালানোর জন্য init বলুন (রাষ্ট্র সংরক্ষণ)। / Etc / inittab ফাইল পুনরায় পরীক্ষা করা হয় না। রানলেভেল এস, এস, 1, 2, 3, 4, বা 5 হওয়া উচিত; অন্যথায়, অনুরোধ নীরবভাবে উপেক্ষা করা হয়।
টেলিটিট ইনটকে বলতে পারে যে এটি SIGTERM এবং SIGKILL সিগন্যালগুলির প্রক্রিয়াগুলি প্রেরণের সময় কতক্ষণ অপেক্ষা করতে হবে। ডিফল্ট পাঁচ সেকেন্ড, কিন্তু এই মান পরিবর্তন করা যেতে পারে -ট সেকেন্ড বিকল্প।
Telinit শুধুমাত্র উপযুক্ত অধিকার সঙ্গে ব্যবহারকারীদের দ্বারা আহ্বান করা যেতে পারে।
ইনিট বা টেলিনিটটি যদি এটির আইডি আইডির দিকে তাকিয়ে থাকে তবে ইনট বাইনারি চেক। প্রকৃত ইনিটের প্রক্রিয়া আইডি সর্বদা 1. এটি থেকে, টেলিনিটকে কল করার পরিবর্তে এটি একটি শর্টকাট হিসাবে ইনিট ব্যবহার করতে পারে।