यह यूनिक्स/लिनक्स के बारे में नहीं है बल्कि फाइल सिस्टम कार्यान्वयन के बारे में है - लेकिन हाँ, यूनिक्स/लिनक्स कर्नेल स्तर पर इनोड्स का उपयोग करता है और फाइल सिस्टम कार्यान्वयन में इनोड (कम से कम आभासी वाले) होते हैं।
- झंडा
file-type
"आईनोड" उस व्यवस्था करने के लिए कहता है में इस फ़ाइल को एक है: सामान्य में, सांकेतिक लिंक बस फ़ाइलें (Btw, निर्देशिका फ़ाइलों को भी कर रहे हैं), होती है "प्रतीकात्मक लिंक"
- फ़ाइल-सामग्री: लक्ष्य के लिए पथ - दूसरे शब्दों में: एक प्रतीकात्मक लिंक केवल एक फ़ाइल है जिसमें इनोड में ध्वज के साथ एक फ़ाइल नाम होता है।
वर्चुअल फाइल सिस्टम में प्रतीकात्मक लिंक भी हो सकते हैं, इसलिए, FUSE या कुछ अन्य फाइल सिस्टम कार्यान्वयन स्रोतों की जांच करें। (Ext2/ext3/ufs..etc)
तो,
जवाब यूनिक्स/लिनक्स में एक आइनोड है?
फाइल सिस्टम कार्यान्वयन पर निर्भर करता है, लेकिन हां, आम तौर पर इनोड में "फ़ाइल-प्रकार" (और मालिक, एक्सेस अधिकार, टाइमस्टैम्प, आकार, डेटा ब्लॉक पर पॉइंटर्स) होते हैं। ऐसे फाइल सिस्टम हैं जिनमें inode
एस (भौतिक प्रत्यारोपण में) नहीं है लेकिन कर्नेल के साथ संगतता बनाए रखने के लिए केवल "वर्चुअल इनोड्स" हैं।
यदि हां, तो क्या इनोड संख्या लक्ष्य और लिंक के लिए समान होगी?
नहीं। आमतौर पर, सिमलिंक अपनी ही आईनोड के साथ एक फ़ाइल, (फ़ाइल प्रकार, स्वयं के डेटा ब्लॉक, आदि के साथ) है
हाँ, लिंक inode अनुमतियाँ लक्ष्य के नोड से अलग हो सकता है कर सकते हैं (यदि एक मौजूद है)?
यह लगभग है symlink फ़ाइलों को संभाला जाता है। आमतौर पर कर्नेल सिम्लिंक अनुमतियों में परिवर्तन की अनुमति नहीं देता है - और सिम्लिंक में हमेशा डिफ़ॉल्ट अनुमतियां होती हैं।आप अपनी खुद की फाइल सिस्टम लिख सकते हैं जो सिम्लिंक के लिए अलग-अलग अनुमतियों को अनुमति देगी, लेकिन आपको परेशानी होगी, क्योंकि chmod
जैसे सामान्य प्रोग्राम स्वयं सिम्लिंक पर अनुमतियां नहीं बदलते हैं, इसलिए इस तरह का एक फाइल सिस्टम वैसे भी व्यर्थ होगा)
हार्डलिंक्स और सिम्लिंक के बीच अंतर को समझें, आपको पहले निर्देशिकाएं समझनी चाहिए।
निर्देशिकाएं फाइलें हैं (इनोड में ध्वज द्वारा विभेदित) जो कर्नेल को बताती हैं, "इस फ़ाइल को file-name
से inode_number
के मानचित्र के रूप में संभालें"। हार्ड-लिंक बस फ़ाइल नाम होते हैं जो उसी inode
पर मानचित्र होते हैं। तो अगर निर्देशिका फ़ाइल में शामिल हैं:
file_a: 1000
file_b: 1001
file_c: 1000
ऊपर मतलब है, इस निर्देशिका में 3 फ़ाइलें हैं:
- file_a inode द्वारा वर्णित 1000
- file_b inode 1001 का वर्णन किया और
- file_c फिर से इनोड 1000 द्वारा वर्णित (इसलिए यह file_a के साथ एक हार्डलिंक से file_a नहीं है - क्योंकि यह कहना असंभव है कि कौन सा फ़ाइल नाम पहले आया था - वाई समान हैं)।
यह सिमलिंक, जहां file_b
(inode 1001) की inode सामग्री "file_a" और एक झंडा जिसका अर्थ है 'यह एक सिमलिंक है "हो सकता है करने के लिए मुख्य अंतर है। इस मामले में, file_b
file_a
पर इंगित एक सिम्लिंक होगा।
और 'readlink()' तुम क्या किसी दिए गए सिमलिंक में पथ नाम के रूप में संग्रहीत किया जाता है पता लगाने के लिए अनुमति देता है - लेकिन जीवन वाकई दिलचस्प जब तत्वों में से एक एक सिमलिंक में पथ को पार करता है जो अपने आप हो जाता है है एक सिम्लिंक कर्नेल इसे एपलबॉम्ब से संभालता है; लोग जरूरी नहीं है। 'Realpath()' भी है जो किसी दिए गए फ़ाइल के लिए सिम्लिंक-मुक्त पूर्ण पथ निर्धारित करता है। –