আমি এটি এবং আপনার পূর্ববর্তী উভয় প্রশ্নের সাথে সম্পর্কিত হওয়ায় চেষ্টা করব এবং উত্তর দেব ।
নেমস্পেসের দরজাগুলি ফাইল /proc/*/ns/*
এবং /proc/*/task/*/ns/*
।
একটি নেমস্পেস একটি নাম প্রক্রিয়া অসমর্থিত প্রক্রিয়া দ্বারা তৈরি করা হয় । একজন নামস্থান তারপর স্থায়ী করা যেতে পারে বেঁধে-মাউন্টns
কিছু অন্যান্য জায়গা ফাইল।
নেট নেমস্পেসের ip netns
জন্য উদাহরণস্বরূপ এটি তা করে । এটি এর নাম স্থানটি ভাগ করে নাও এবং এতে বাঁধাই করে ।net
/proc/self/ns/net
/run/netns/netns-name
একটি /proc
রুট PID নামস্থানে মাউন্ট, আপনি সমস্ত নামব্যবধান করে তাদের মধ্যে একটি প্রক্রিয়া আছে তালিকাবদ্ধ করতে পারেন:
# readlink /proc/*/task/*/ns/* | sort -u
ipc:[4026531839]
mnt:[4026531840]
mnt:[4026531856]
mnt:[4026532469]
net:[4026531956]
net:[4026532375]
pid:[4026531836]
pid:[4026532373]
uts:[4026531838]
বর্গাকার বন্ধনীর সংখ্যা হ'ল ইনোড নম্বর।
প্রদত্ত প্রক্রিয়াটির জন্য এটি পেতে:
# ls -Li /proc/1/ns/pid
4026531836 /proc/1/ns/pid
এখন, স্থায়ী নেমস্পেস থাকতে পারে যার মধ্যে কোনও প্রক্রিয়া নেই। এগুলি খুঁজে বের করা অনেক কার্যকর কৌশলযুক্ত হতে পারে A
প্রথমত, আপনাকে মনে রাখতে হবে যে এখানে বেশ কয়েকটি মাউন্ট নেমস্পেস থাকতে পারে ।
# awk '$9 == "proc" {print FILENAME,$0}' /proc/*/task/*/mountinfo | sort -k2 -u
/proc/1070/task/1070/mountinfo 15 19 0:3 / /proc rw,nosuid,nodev,noexec,relatime - proc proc rw
/proc/19877/task/19877/mountinfo 50 49 0:3 / /run/netns/a rw,nosuid,nodev,noexec,relatime shared:2 - proc proc rw
/proc/19877/task/19877/mountinfo 57 40 0:3 / /proc rw,nosuid,nodev,noexec,relatime - proc proc rw
/proc/1070/task/1070/mountinfo 66 39 0:3 / /run/netns/a rw,nosuid,nodev,noexec,relatime shared:2 - proc proc rw
/proc/19877/task/19877/mountinfo 68 67 0:3 / /mnt/1/a rw,nosuid,nodev,noexec,relatime unbindable - proc proc rw
এগুলি /mnt/1/a
, /run/netns/a
নামস্থান ফাইল হতে পারে।
আমরা একটি ইনোড নম্বর পেতে পারি:
# nsenter --mount=/proc/19877/task/19877/ns/mnt -- ls -Li /mnt/1/a
4026532471 /mnt/1/a
তবে এটি উপরের গণনায় তালিকায় নেই তার চেয়ে অনেক বেশি আমাদের জানায় না।
আমরা চেষ্টা করতে এবং এটি বিভিন্ন ধরণের যে কোনও হিসাবে প্রবেশ করতে পারি:
# nsenter --mount=/proc/19877/task/19877/ns/mnt -- nsenter --pid=/mnt/1/a true
nsenter: reassociate to namespace 'ns/pid' failed: Invalid argument
# nsenter --mount=/proc/19877/task/19877/ns/mnt -- nsenter --mount=/mnt/1/a true
nsenter: reassociate to namespace 'ns/mnt' failed: Invalid argument
# nsenter --mount=/proc/19877/task/19877/ns/mnt -- nsenter --net=/mnt/1/a true
#
ঠিক আছে, এটি একটি net
নেমস্পেস ফাইল ছিল।
সুতরাং মনে হয় আমাদের নামের স্থানগুলির তালিকা তৈরি করার একটি পদ্ধতি রয়েছে: ns
সমস্ত কার্যের ডিরেক্টরি proc
তালিকাবদ্ধ করুন , তারপরে সমস্ত মাউন্টপয়েন্টগুলি সন্ধান করুন /proc/*/task/*/mountinfo
এবং সেগুলি প্রবেশ করার চেষ্টা করে তাদের ধরনটি বের করুন।