/ প্রোক / পিআইডি / এফডি / এক্স লিঙ্ক নম্বর


36

লিনাক্স-এ, /proc/PID/fd/Xপাইপ বা সকেটযুক্ত ফাইল বর্ণনাকারীদের লিঙ্কগুলির একটি নম্বর থাকে, যেমন:

l-wx------ 1 user user 64 Mar 24 00:05 1 -> pipe:[6839]
l-wx------ 1 user user 64 Mar 24 00:05 2 -> pipe:[6839]
lrwx------ 1 user user 64 Mar 24 00:05 3 -> socket:[3142925]
lrwx------ 1 user user 64 Mar 24 00:05 4 -> socket:[3142926]
lr-x------ 1 user user 64 Mar 24 00:05 5 -> pipe:[3142927]
l-wx------ 1 user user 64 Mar 24 00:05 6 -> pipe:[3142927]
lrwx------ 1 user user 64 Mar 24 00:05 7 -> socket:[3142930]
lrwx------ 1 user user 64 Mar 24 00:05 8 -> socket:[3142932]
lr-x------ 1 user user 64 Mar 24 00:05 9 -> pipe:[9837788]

প্রথম লাইনে মত: 6839. যে সংখ্যাটি প্রতিনিধিত্ব করে?

উত্তর:


36

প্রশ্নে পাইপ বা সকেটের জন্য এটি ইনোড নম্বর।

একটি পাইপ হ'ল একমুখী চ্যানেল, এতে লেখার শেষ এবং একটি পঠন শেষ হয়। আপনার উদাহরণে, দেখে মনে হচ্ছে এফডি 5 এবং এফডি 6 একে অপরের সাথে কথা বলছে, যেহেতু ইনোড সংখ্যাগুলি একই। (যদিও না, নীচে দেখুন।)

কোনও পাইপের মাধ্যমে নিজেই কথা বলার প্রোগ্রাম দেখার চেয়ে সাধারণ বিষয় হল একে অপরের সাথে কথা বলার জন্য পৃথক প্রোগ্রামের একজোড়া, সাধারণত আপনি শেল দিয়ে তাদের মধ্যে একটি পাইপ সেটআপ করার কারণে:

shell-1$ ls -lR / | less

তারপরে অন্য টার্মিনাল উইন্ডোতে:

shell-2$ ...find the ls and less PIDs with ps; say 4242 and 4243 for this example...
shell-2$ ls -l /proc/4242/fd | grep pipe
l-wx------ 1 user user 64 Mar 24 12:18 1 -> pipe:[222536390]
shell-2$ ls -l /proc/4243/fd | grep pipe
l-wx------ 1 user user 64 Mar 24 12:18 0 -> pipe:[222536390]

এটি বলে যে পিআইডি 4242 এর স্ট্যান্ডার্ড আউটপুট (এফডি 1, কনভেনশন অনুসারে) ইনোড নম্বর 222536390 সহ পাইপের সাথে সংযুক্ত এবং পিআইডি 4243 এর স্ট্যান্ডার্ড ইনপুট (এফডি 0) একই পাইপের সাথে সংযুক্ত রয়েছে।

lsএর সবকটিই বলতে গেলে দীর্ঘ পথ যা'র আউটপুট'র ইনপুটটিতে প্রেরণ করা হচ্ছে less

আপনার উদাহরণ ফিরে পেতে, এফডি 1 এবং এফডি 2 প্রায় একে অপরের সাথে কথা বলছে না । সম্ভবত এটি স্টাডাউট (এফডি 1) এবং স্টেডার (এফডি 2) বেঁধে রাখার ফলস্বরূপ, তাই তারা উভয়ই একই গন্তব্যে যায়। আপনি এটি বোর্ন শেল দিয়ে এটি করতে পারেন:

$ some-program 2>&1 | some-other-program

সুতরাং, আপনি যদি বাইরে ঘুরে দেখেন /proc/$PID_OF_SOME_OTHER_PROGRAM/fd, আপনি some-programউদাহরণস্বরূপ এফডি 1 এবং 2 এর সাথে সংযুক্ত যেমন একই ইনড নম্বর সহ পাইপের সাথে তৃতীয় এফডি সংযুক্ত পেয়েছেন । আপনার উদাহরণে এফডি 5 এবং 6 এর সাথে যা ঘটছে তা এটিও হতে পারে তবে এই দুটি এফডি কীভাবে একসাথে বাঁধা পড়েছে তা সম্পর্কে আমার কোনও তত্ত্ব নেই। আপনি এটি জানতে হবে যে প্রোগ্রামটি অভ্যন্তরীণভাবে কী করছে তা খুঁজে বের করার জন্য।


1
উদাহরণস্বরূপ, আমি মনে করি, pidginএটি ছিল - এতে প্রচুর পাইপ এবং সকেট এবং অন্যান্য সামগ্রী ছিল, তাই এটি একটি দুর্দান্ত উদাহরণ। একটি সর্বশেষ প্রশ্ন: আইওনডগুলি কেবল একটি নির্দিষ্ট ফাইল সিস্টেমের প্রসঙ্গে নির্দিষ্ট, সঠিক? যেমনটি ছিলাম, আমার /ফাইল সিস্টেমে আমি 3 ইনোড এবং অন্যটি আমার ফাইল সিস্টেমে অন্য (পৃথক) ইনোড 3 রাখতে পারি /boot
থানাটোস

4
হ্যাঁ। ক্ষেত্রে /procফাইলসিস্টেম, inode সংখ্যার মাত্র মাছি (দেখুন আপ তৈরি করা হয় get_next_ino()fs/inode.cকার্নেল মধ্যে), 0 থেকে শুরু যখন সিস্টেম পুনশ্চ বুট করা হয়। প্রক্রিয়া যে তাদের করে তোলে আপ লিনাক্স এর impersistent ফাইল সিস্টেম (proc, configfs, ramfs, autofs 'র ...) যার মধ্যে inode সংখ্যার বিভিন্ন দ্বারা ভাগ করা হয় অনন্য যদিও POSIX শব্দার্থবিদ্যা এটা দাবী করে না। এটি একটি বরং বিশেষ ক্ষেত্রে। আপনি যে নিয়মটির কথা বলছেন তা সাধারণত এক্সট্রানের মতো স্বাভাবিক ধ্রুবক ফাইল সিস্টেমের সাথে সম্পর্কিত হয়।
ওয়ারেন ইয়ং

33

সকেটের জন্য আপনি ইনোড ইন /proc/net/tcp, /proc/net/udpবা সম্পর্কে আরও তথ্য পেতে পারেন /proc/net/unix। উদাহরণ স্বরূপ:

ls -l /proc/<pid>/fd
lrwx------ 1 root root 64 May 26 22:03 3 -> socket:[53710569]

আমরা দেখছি ইনোডটি 53710569।

head -n1 < tcp ; grep -a 53710569 tcp
sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode                   
155: 0100007F:001B 00000000:0000 0A 00000000:00000000 00:00000000 00000000  0        0 53710569 1 ffff88011f52c200 300 0 0 2 -1

এই ক্ষেত্রে, এটি একটি শোনার সকেট (কোনও দূরবর্তী ঠিকানা নয়), স্থানীয় পোর্ট ২ 27 (0x1 বি) এ শোনা। আইপি অ্যাড্রেসগুলি "নেটওয়ার্ক নোটেশন" -এ হেক্সে 4 বাইট হয়, আপনি inet_ntoaএটি স্ট্যান্ডার্ড অ্যাবিসিডি স্বরলিপিতে রূপান্তর করতে ফাংশনটি ব্যবহার করতে পারেন (এই ক্ষেত্রে 127.0.0.1)।

নোট করুন যে এই ফাইলগুলি 0 বাইট হিসাবে প্রদর্শিত হচ্ছে তবে আপনি যদি সেগুলি পড়েন তবে সামগ্রী থাকে। এছাড়াও -aগ্রীপের সাথে প্রয়োজনীয় যেহেতু তারা (যেমন সহ unix) বাইনারি হতে পারে বলে মনে রাখবেন।


এর রয়েছে /proc/net/tcp6এবং /proc/net/udp6IPv6, জন্য।
ক্রেগ ম্যাককুইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.