একটি "সাব্রাইপার" প্রক্রিয়া কী?


38

"সাব্রাইপার" শব্দটি কয়েকটি উত্তরে ব্যবহৃত হয়। গুগল অনুসন্ধান করে এমন শব্দগুলি যেখানে "সবেমাত্র ব্যবহৃত" হয়েছে সেখানে প্রবেশগুলি সজ্জিত করা হয়।

আমি কীভাবে বুঝতে পারি যে একটি "সাব্রাইপার" কী?


3
কথাটি আগে কখনও শুনিনি। আপনি প্রসঙ্গে কিছু রেফারেন্স অন্তর্ভুক্ত করতে পারেন?
সেলেদা

5
এখানে একটি: আমি এটি একটি উত্তরতে unix.stackexchange.com/a/177361/5132 এ ব্যবহার করেছি ।
JdeBP

সম্পর্কিত প্রশ্ন যা সম্ভবত আমার এখানে সার্ভারফাল্ট সার্ভারফল্ট
কোয়েশনস

উত্তর:


49

এটি সিস্টেম কল prctl () এর পতাকা হিসাবে লিনাক্স কার্নেল 3.4 এ প্রয়োগ করা হয়েছিল ।

prctl(2)ম্যানপেজ থেকে :

[...] একটি সাব্রাইপার init(1)তার বংশধর প্রক্রিয়াগুলির ভূমিকা পূরণ করে । এতিম হওয়া প্রক্রিয়াটি সমাপ্ত হওয়ার পরে (যেমন, এর নিকটস্থ পিতামাত ইতিমধ্যে সমাপ্ত হয়ে গেছে) এবং সাব্রাইকার হিসাবে চিহ্নিত হিসাবে চিহ্নিত করা হয়েছে, নিকটস্থ এখনও জীবিত পূর্বপুরুষ সাব্রাইপার একটি SIGCHLDসংকেত পাবেন এবং wait(2)প্রক্রিয়াটির সমাপ্তির স্থিতি আবিষ্কার করতে সক্ষম হবেন ।

একটি প্রক্রিয়া নিজেকে সাব্রাইপার হিসাবে সংজ্ঞায়িত করতে পারে prctl(PR_SET_CHILD_SUBREAPER)। যদি তা হয় তবে এটি init(পিআইডি 1) নয় যা অনাথ শিশু প্রসেসের পিতামাতার হয়ে উঠবে , পরিবর্তে নিকটস্থ জীবিত পিতামহাকে যে সাব্রাইপার হিসাবে চিহ্নিত করা হবে তা নতুন পিতা বা মাতা হয়ে উঠবে। যদি কোন জীবিত দাদু নেই, initকরেন।

এই প্রক্রিয়াটি বাস্তবায়নের কারণ হ'ল ইউজারস্পেস সার্ভিস ম্যানেজার / সুপারভাইজার (যেমন upstart, systemd) তাদের শুরু করা পরিষেবাগুলি ট্র্যাক করতে হবে। অনেক পরিষেবা দ্বি-কাঁটাচামচ করে ডেমোনাইজ করে এবং স্পষ্টভাবে পিআইডি -তে পুনরায় প্যারেন্টেন্ট হয় The সার্ভিস ম্যানেজার আর SIGCHLDতাদের জন্য সিগন্যালগুলি গ্রহণ করতে সক্ষম হবেনা এবং বাচ্চাদের কাটা কাটা দায়িত্বে আর থাকবেন না wait()। পিআইডি 1 পুনরায় প্যারেন্টেন্ট প্রক্রিয়াগুলি পরিষ্কার করার মুহুর্তে শিশুদের সম্পর্কে সমস্ত তথ্য হারিয়ে যায়। এখন, কোনও পরিষেবা পরিচালকের প্রক্রিয়া নিজেকে "সাব-থাই" এর ধরণের হিসাবে চিহ্নিত করতে পারে এবং শুরু করা পরিষেবাদি দ্বারা নির্মিত সমস্ত অনাথ প্রক্রিয়াগুলির জন্য পিতামাতারূপে থাকতে সক্ষম। সমস্ত SIGCHLDসংকেত পরিষেবা পরিচালকের কাছে সরবরাহ করা হবে।

লিনাক্সে, নাতি-নাতনীকে কাঁটা দেওয়ার পরে মধ্যবর্তী প্রক্রিয়াটি দু'বার কাঁটাচামচ করে সাধারণত একটি ডেমন তৈরি করা হয় । এটি জম্বি প্রক্রিয়াগুলি এড়ানোর জন্য একটি সাধারণ কৌশল । Init স্ক্রিপ্টটি একটি শিশুকে কল করে। সেই শিশুটি আবার কাঁটাচামচ করে এবং ততক্ষণে বাইরে চলে যায়। নাতনি দ্বারা গৃহীত হবে init, যা নিয়মিত wait()জম্বি এড়ানোর জন্য তার বাচ্চাদের প্রস্থান স্থিতি সংগ্রহ করার আহ্বান জানায় । সাব্রাইপার্সের ধারণার সাথে সাথে, ইউজারস্পেস সার্ভিস ম্যানেজার এখন পরিবর্তে নতুন অভিভাবক হয়ে উঠবে init


সুতরাং, আমি কি ভাবতে পারি যে প্রক্রিয়াটি "উপ" প্রসেসটি "কাটবে"? অথবা, প্রক্রিয়াটি একটি "সাব" রিপার কারণ "প্রধান" রাইটারটি ইআর? কীভাবে শব্দটি তৈরি হয়েছিল তা ভেবে দেখার চেষ্টা করছি। উত্তর করার জন্য ধন্যবাদ!
কেনেচিউ

3
উপরের লিনাক্স কার্নেল ৩.৪ লিঙ্ক অনুসরণ করে , এই বাস্তবায়নের জন্য কমিট কমেন্টে আরও বিশদ রয়েছে। (একটি গিট মন্তব্যে লুকানো বিবরণ দেখে
অবাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.