একটি পিআইডি নেমস্পেস তৈরি করুন
এখানে সঠিক কমান্ডটি ব্যবহার করতে হবে unshare
। নোট করুন যে এটি করার জন্য প্রয়োজনীয় বিকল্পগুলি কেবলমাত্র থেকে উপলব্ধ util-linux 2.23
। আপনি যে প্রোগ্রামটি চালাচ্ছেন তার জন্য একটি নতুন পিআইডি নেমস্পেস তৈরি করার ধারণাটি হ'ল যে সমস্ত শিশুরাও এই নেমস্পেসে তৈরি হয়েছে। আপনি কেবল নতুন করে পিআইডি নেমস্পেসে কমান্ড চালাতে পারেন:
sudo unshare -fp some_command
শেল চালাতে, কমান্ডটি বাদ দিন। এটি এমন একটি প্রক্রিয়া তৈরি করবে যা তার বাচ্চাদের প্রত্যেকের সাথে পিতামাতার (সিস্টেম) নেমস্পেসের মধ্যে যথারীতি একটি পিআইডি রাখবে। তবে নতুন নেমস্পেসের মধ্যে এটির পিআইডি 1
সহ init
প্রসেসের কয়েকটি বিশেষ বৈশিষ্ট্য থাকবে । সম্ভবত একটি তদারকি দৃষ্টিকোণ থেকে সর্বাধিক প্রাসঙ্গিক বৈশিষ্ট্যটি হ'ল যদি এর বংশধরদের মধ্যে কেউ এতিম হয় তবে তারা প্রকৃত init
প্রক্রিয়াটির পরিবর্তে এই প্রক্রিয়ায় পুনরায় পিতৃত্বপ্রাপ্ত হবে ।
বেশিরভাগ পর্যবেক্ষণের ক্ষেত্রে কেবল এটি করা যথেষ্ট হতে পারে। পূর্বে উল্লিখিত হিসাবে, নেমস্পেসের মধ্যে থাকা সমস্ত প্রক্রিয়াগুলির প্যারেন্ট নেমস্পেসের মধ্যে সমস্ত পিআইডি থাকে যাতে নিয়মিত কমান্ডগুলি তাদের ক্রিয়াকলাপ পর্যবেক্ষণ করতে ব্যবহার করতে পারে। আমাদের আশ্বাসও দেওয়া হয় যে যদি নেমস্পেসের কোনও প্রক্রিয়া অনাথ হয়ে যায় তবে এটি শীর্ষ স্তরের প্রোগ্রামের পিআইডি নীচে প্রক্রিয়া গাছের শাখাগুলির বাইরে নেমে আসবে না যার অর্থ এটি এখনও সহজেই ট্র্যাক রাখা যায়।
মাউন্ট নেমস্পেসের সাথে একত্রিত করুন
তবে, আমরা যা করতে পারি না তা হ'ল পিআইডি-র প্রসঙ্গে প্রক্রিয়াটি পর্যবেক্ষণ করা যা এটি মনে করে যে এটি হয়েছে। এটি করার জন্য এবং বিশেষ ps
করে নতুন নেমস্পেসের মধ্যে কমান্ডটি ব্যবহার করতে সক্ষম হতে আপনাকে procfs
নেমস্পেসের জন্য একটি পৃথক ফাইল সিস্টেম মাউন্ট করতে হবে । এটি কেবলমাত্র অবস্থান যে যেহেতু অন্য সমস্যার পালা বিশালাকার মধ্যে ps
জন্য গ্রহণ procfs
হয় /proc
। একটি সমাধান chroot
হ'ল জেল তৈরি করা এবং procfs
সেখানে নতুন মাউন্ট করা । তবে এটি একটি জটিল দৃষ্টিভঙ্গি হিসাবে ন্যূনতমভাবে আমাদের যে কোনও বাইনারিগুলি নতুন রুটের উপর নির্ভর করে যে কোনও লাইব্রেরির সাথে আমরা ব্যবহার করতে ইচ্ছুক কোনও কপি করতে হবে (বা কমপক্ষে হার্ড লিঙ্ক)।
সমাধানটি হ'ল নতুন মাউন্ট নেমস্পেস ব্যবহার করা । এর মধ্যে আমরা নতুনভাবে procfs
এমনভাবে মাউন্ট করতে পারি যা প্রকৃত মূল /proc
ডিরেক্টরিটি ব্যবহার করে , পিআইডি নেমস্পেসের মধ্যে ব্যবহারযোগ্য হতে পারে এবং অন্য কোনও ক্ষেত্রে হস্তক্ষেপ করে না। এই প্রক্রিয়াটিকে খুব সহজ করার জন্য, unshare
কমান্ডটি --mount-proc
বিকল্প দেয় :
sudo unshare -fp --mount-proc some_command
এখন ps
সম্মিলিত নেমস্পেসের মধ্যে চলমান কেবলমাত্র পিআইডি নামস্পেসের প্রক্রিয়াগুলি দেখায় এবং এটি পিআইডি থাকার শীর্ষ স্তরের প্রক্রিয়াটি দেখায় 1
।
কি হবে nsenter
?
নামটি যেমন বোঝায়, nsenter
ইতিমধ্যে তৈরি করা একটি নেমস্পেস প্রবেশ করতে ব্যবহার করা যেতে পারে unshare
। আমরা যদি অন্য কোনও সম্পর্কহীন স্ক্রিপ্ট থেকে কেবল নেমস্পেসের ভিতরে থেকেই তথ্য পেতে চাই তবে এটি দরকারী। সহজ উপায় হ'ল নেমস্পেসের মধ্যে চলমান যে কোনও প্রোগ্রামের পিআইডি দেওয়া access পরিষ্কার হওয়ার জন্য এটি যে নাম স্পেস থেকে nsenter
চলছে তা লক্ষ্যমাত্রার প্রোগ্রামের পিআইডি হতে হবে (যেহেতু নেমস্পেসগুলি বাসা বাঁধতে পারে তাই একক প্রক্রিয়াতে অনেকগুলি পিআইডি থাকা সম্ভব)। লক্ষ্য পিআইডি / মাউন্ট নেমস্পেসে একটি শেল চালাতে, কেবল করুন:
sudo nsenter -t $PID -m -p
যদি এই নেমস্পেসটি উপরের মতো সেট আপ করা হয়, ps
তবে এখন কেবল সেই নেমস্পেসের মধ্যে কেবল প্রক্রিয়াগুলি তালিকাভুক্ত করা হবে।