কোনও নতুন ডিরেক্টরিতে কিছু যুক্ত হওয়ার আগে কেন একটি শক্ত লিঙ্কের গণনা রয়েছে?


38

বলুন আমি কেবল ডিরেক্টরি ডিরেক্টরী তৈরি করি এবং তারপরে আমি ls -ld কমান্ড করি। আমি দেখতে পাচ্ছি যে হার্ড লিঙ্কগুলির সংখ্যা 2, শুরু থেকে হার্ড লিঙ্কটি 2 কে ঠিক কী করে? বর্তমান ডিরেক্টরিতে সাব-ডিরেক্টরিগুলির সংখ্যা কি হার্ড লিঙ্কের সংখ্যার সমান - 2?


উত্তর:


39

ঐতিহাসিকভাবে , প্রথম ইউনিক্স ফাইল সিস্টেম যে ডিরেক্টরির মধ্যে দুই এন্ট্রি তৈরি করা হয়েছে: .ডিরেক্টরির নিজেই প্রতি নির্দেশ, এবং ..তার পিতা বা মাতা প্রতি নির্দেশ। এটি অ্যাপ্লিকেশন এবং ওএস উভয়ের জন্যই ফাইল সিস্টেমকে অতিক্রম করার একটি সহজ উপায় সরবরাহ করেছিল।

সুতরাং প্রতিটি ডিরেক্টরিতে 2 + n এর লিঙ্ক গণনা রয়েছে যেখানে এন সাব-ডিরেক্টরিগুলির সংখ্যা। লিঙ্কগুলি হ'ল তার পিতামাতার সেই ডিরেক্টরিটির জন্য .প্রবেশিকা, ডিরেক্টরিটির নিজস্ব ..এন্ট্রি এবং প্রতিটি উপ-ডিরেক্টরিতে প্রবেশ entry উদাহরণস্বরূপ, ধরুন এটি /parentসমস্ত ডিরেক্টরিতে অন্তর্ভুক্ত সাবট্রি এর বিষয়বস্তু :

/parent
/parent/dir
/parent/dir/sub1
/parent/dir/sub2
/parent/dir/sub3

তারপর dir5 একটি লিঙ্ক গণনা রয়েছে: dirমধ্যে এন্ট্রি /parent, .এন্ট্রি /parent/dir, এবং তিন ..প্রতিটি এন্ট্রি /parent/dir/sub1, /parent/dir/sub2এবং /parent/dir/sub3। যেহেতু /parent/dir/sub1কোনও উপ-ডিরেক্টরি নেই, তাই এর লিঙ্কের গণনা 2 ( sub1প্রবেশ /parent/dirএবং .প্রবেশের ক্ষেত্রে /parent/dir/sub1)।

মূল ডিরেক্টরিতে বিশেষ ক্যাসিংয়ের পরিমাণ হ্রাস করতে, যার কোনও "যথাযথ" পিতা বা মাতা নেই, মূল ডিরেক্টরিটিতে একটি ..এন্ট্রি রয়েছে যা নিজেই নির্দেশ করে। এইভাবে এটিরও একটি লিঙ্ক গণনা রয়েছে 2 টি উপ-ডিরেক্টরিগুলির সংখ্যা, 2 টি হচ্ছে /.এবং /..

পরবর্তীতে ফাইল সিস্টেম মেমরি পিতা বা মাতা ডিরেক্টরি ট্র্যাক রাখতে এবং সাধারণত প্রয়োজন হবে না সেদিকেই ঝুঁকেছে আছে .এবং ..প্রকৃত এন্ট্রি হিসেবে বিদ্যমান; টিপিক্যাল আধুনিক ইউনিক্স সিস্টেম সমুহের আচরণ .এবং ..ফাইলসিস্টেম-টাইপ স্বাধীন ফাইলসিস্টেম কোড অংশ হিসেবে বিশেষ মান হিসাবে। কিছু ফাইল সিস্টেমে এখনও অন্তর্ভুক্ত থাকে .এবং ..এন্ট্রি থাকে, বা ডিস্কে কিছুই না উপস্থিত থাকার ভান করে।

বেশিরভাগ ফাইলসিস্ট্রি এখনও ডিরেক্টরিগুলির জন্য 2 + n এর লিঙ্ক গণনা রিপোর্ট করে .এবং ..এন্ট্রিগুলি বিদ্যমান কিনা তা নির্ধারণ করে তবে ব্যতিক্রম রয়েছে, উদাহরণস্বরূপ, বিটিআরএফগুলি এটি করে না।


4
..পিতামাতাকে নির্দেশ করা বর্তমান ডিরেক্টরিটির লিঙ্ক কাউন্টকে প্রভাবিত করে না। 2 এর গণনাটি আসে .এবং ডিরেক্টরিটির (মূল) নামটি নিজেই তালিকাবদ্ধ করে। আপনি যেভাবে এটি রেখেছেন তা কিছুটা দ্বিধাগ্রস্ত, এবং এটির মতো শব্দ করে তোলে .এবং ..এটি দুটি। ..গণিতটি কীভাবে কার্যকর হয় তা কেবল ব্যাখ্যা করার জন্য ব্যবহার করা উচিত 2+n:)
th3an0maly

@ th3an0maly পিতামাতার দিকে ইঙ্গিত করা পিতামাতার লিঙ্ক কাউন্টকে প্রভাবিত করে। আমি সত্যিই দেখতে পাই না যে "প্রতিটি উপ-ডিরেক্টরিতে" .. প্রবেশ "কীভাবে অস্পষ্ট, এবং আমি বুঝতে পারি না যে আপনি" ডিরেক্টরিতে নিজের নাম তালিকাভুক্ত করা "এর অর্থ কী।
গিলস 'অশুভ হওয়া বন্ধ করুন'

আসলে, এই উত্তর: unix.stackexchange.com/a/101516/160264 ঠিক আমি ইঙ্গিত করে যাচ্ছি। আপনার উত্তরটি পড়ার পরে এটি পড়ুন, যেহেতু আপনার শীর্ষে শীর্ষস্থানীয় ছিল।
th3an0maly

@ th3an0maly এখনও আপনি কী ইঙ্গিত করছেন তা আমার কোনও ধারণা নেই। আপনি কি ইঙ্গিত করার পরিবর্তে স্পষ্টভাবে তা প্রকাশ করতে পারেন?
গিলস 'অশুভ হওয়া বন্ধ করুন'

@ গোল্ডিলোকের উত্তর পরিষ্কার। আমি যা বলতে চাইছিলাম তা হ'ল আপনার উত্তরটি তার মতো হতে পারে। তবে আমি যখন আপনার উত্তরটি পড়ছিলাম তখন আমি তার উত্তরটি পড়িনি। প্রথম লাইনটি হ'ল আমার আসল মন্তব্যটি হ'ল: "ডিরেক্টরিতে .এটির জন্য একটি রয়েছে এবং এর ভিতরে একটি রয়েছে one " যদি এটি এখনও আপনার কাছে অস্পষ্ট থাকে তবে আমি দুঃখিত আমি আরও কিছু বলতে চাই না unable আমি কেবল আরও ভাল করতে পারলাম মন্তব্যগুলিতে তার উত্তরটি এখানে অনুলিপি করুন।
th3an0maly

13

ডিরেক্টরিটি নিজেই রয়েছে এবং এর .ভিতরে একটি রয়েছে inside

বর্তমান ডিরেক্টরিতে সাব-ডিরেক্টরিগুলির সংখ্যা কি হার্ড লিঙ্কের সংখ্যার সমান - 2?

এটি উপলব্ধি করে, যেহেতু প্রতিটি উপ-ডিরেক্টরি একটি ..হার্ডলিঙ্ক তৈরি করে এবং এর বাইরে আপনি ডিরেক্টরিগুলিতে হার্ডলিঙ্ক তৈরি করতে পারবেন না। 1 যাইহোক, আমি গুরুতর কোনও কারণে এটি বিশ্বাস করব না, যেমন। যেহেতু সাব-ডিরেক্টরিগুলি গণনা করা এবং আসল নম্বর পাওয়া সহজ।

আপনি যদি কেবলমাত্র lsকতগুলি সাবস রয়েছে তার একটি ধারণার জন্য আউটপুটটি দেখছেন , তবে এটি আপনাকে একটি শালীন ধারণা দেয়।

1 বা কমপক্ষে, আপনি এটি করতে পারবেন না ln। আমি প্রোগ্রামগতভাবে চেষ্টা করার চেষ্টা করিনি, এবং man 2 linkঅস্পষ্ট - একটি ডিরেক্টরিতে লিঙ্ক করার ক্ষেত্রে কোনও সুস্পষ্ট ত্রুটি নেই, যদিও এমন এক দম্পতি রয়েছে যা প্রয়োগ করতে পারে ( EMLINK, EPERM)। সুতরাং যদি না কোথাও কোনও মানক থাকে যে বলে যে ডিরেক্টরিতে কেবলমাত্র সম্ভাব্য হার্ড লিঙ্কগুলি .এবং ..আবার, আমি কেবল সেই হার্ড লিঙ্ক গণনাটিকে একটি নৈমিত্তিক ক্লু হিসাবে বিবেচনা করব।


2
ডিরেক্টরিগুলির লিঙ্কগুলি অনুমোদিত কিনা এবং আপনি লিঙ্ক গণনা থেকে সাবডিয়ারগুলি গণনা করতে পারবেন কিনা, উভয়ই নির্ভর করে আপনি কোন ফাইল সিস্টেমটি ব্যবহার করছেন - কিছু অনুমতি দেয়, কিছু দেয় না।
অ্যালাঙ্ক

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