एलएस आउटपुट में सिम्लिंक का "आकार" क्या दर्शाता है?


11

मैं उदाहरण से शुरू करूँगा:

$ ls -l dir1
total 4
-rw-r--r-- 4 maythux maythux 1650 2008-01-10 16:33 file
lrwxrwxrwx 1 maythux maythux  7 2008-01-15 15:17 symfile -> file

symfile फ़ाइल का एक सिमलिंक है file

जैसा कि मुझे पता 1650है कि फ़ाइल का आकार होगा file, लेकिन वह संख्या क्या है 7जो आकार स्तंभ के नीचे रखी गई है?

संपादित करें: चल रहा है du:

$ du -sh symfile
0   symfile

तो आप कैसे साबित कर सकते हैं कि 7 सिम्लिंक आकार है ?!


अपडेट करें:

इसे इस्तेमाल करे

$ touch file
$ du -sh file
0 file
$ ls -l file
-rw-rw-r-- 1 maythux maythux 0 Jun  1 19:42 file

ध्यान दें कि आकार भी यहां 0 है।

अभी:

$ ln -s file sym
$ du -sh sym
0 sym
$ ls -l sym
lrwxrwxrwx 1 maythux maythux 4 Jun  1 19:44 sym -> file

तो, मुझे लगता है कि यह न केवल एक आकार है


2
7फाइल सिस्टम (और संभवतः अन्य पैरामीटर) पर निर्भर करता है। यह ext4 पर 7 है, लेकिन btrfs पर 13 और tmpfs पर 3 हो सकता है।
मुरु

1
यह एक आकार है, लेकिन आकार फाइलसिस्टम पर निर्भर करता है (btrfs संभवतया ext4 की तुलना में अधिक मेटाडेटा संग्रहीत करता है, और tmpfs से अधिक ext4)। आप अपनी डिस्क को लिंक से भर सकते हैं। मैं सिर्फ यह कह रहा हूं, अगर आप एक अलग फाइल सिस्टम पर एक अलग संख्या देखते हैं तो आश्चर्यचकित न हों।
मूरू


1
आपकी निर्देशिका प्रविष्टि में इसका न्यूनतम आकार है, जो इसकी आवश्यकता से अधिक है। पर्याप्त प्रविष्टियाँ करें और निर्देशिका का आकार बढ़ेगा। साथ की जाँच करें: mkdir foo; ls -ld foo; for i in {1..1000}; do ln -s foo/bar foo/$i; done; ls -ld foo
मूरू

जवाबों:


13

प्रतीकात्मक लिंक कमरे को नाम और स्टोर करने के लिए लेता है और अन्य मेटाडेटा के लिए कुछ बाइट्स को लक्षित करता है।

तो यह साइमलिंक का आकार है।

आकार के संबंध में du -sh: du केवल यह देखता है कि कितने ब्लॉक आवंटित किए गए हैं, और इसलिए 0. दिखा सकता है statऔर ls -lउस संबंध में आकार दिखाने में बेहतर है।


फिर du -sh symfile0 क्यों देता है? -
Maythux

du केवल देखता है कि कितने ब्लॉक आवंटित किए गए हैं, और इसलिए 0. 0. स्टेट और एलएस-एल स्मार्ट हो सकते हैं।
रिनविंड

कृपया अपडेट पढ़ें
Maythux

मेरा उत्तर देखें: यह नाम, लक्ष्य और कुछ मेटाडेटा है। कुल में यह 7 बाइट्स के लिए बनाता है। अन्य ओएस अन्य मेटाडेटा को स्टोर करते हैं और इसलिए उनका एक अलग आकार होगा।
रिनविंड

सवाल था "आप इसे कैसे साबित कर सकते हैं?"
पायलट 6

5

यह बाइट्स में साइमलिंक का आकार है।

कुछ फ़ाइल सिस्टम में निर्देशिका प्रविष्टि के अंदर एक छोटा सा क्षेत्र होता है, जिसका उपयोग फ़ाइल की शुरुआत के लिए किया जाता है, जो fileबड़ी निर्देशिका प्रविष्टियों की कीमत पर सहानुभूति और छोटे रीड्स (थिंक ) के प्रसंस्करण को तेज करता है ।

यदि संपूर्ण सिम्लिंक सामग्री निर्देशिका प्रविष्टि में फिट होती है, तो कोई डेटा ब्लॉक आवंटित नहीं किया जाता है, और duआकार शून्य के रूप में दिखाता है। यदि सिमलिंक फिट नहीं होता है, तो अंतरिक्ष को सामान्य रूप से आवंटित किया जाता है (इसलिए आप एक एकल ब्लॉक आवंटन के साथ समाप्त होते हैं), जिसे टेल मर्जिंग का उपयोग करके फाइलसिस्टम द्वारा अनुकूलित किया जा सकता है (लेकिन duइस बारे में जानने के लिए कोई एपीआई नहीं है )।

ext4फाइल सिस्टम सिमलिंक केवल, मापदंड समारोह में पाए जाते हैं के लिए इस अनुकूलन प्रदर्शन ext4_inode_is_fast_symlink


" कुछ फ़ाइल सिस्टम ... " - यदि आप इस सुविधा (और बिना किसी भी सामान्य) के साथ सामान्य फ़ाइल सिस्टम सूचीबद्ध करते हैं, तो आपका उत्तर बेहतर होगा।
आरएम

1

यह बाइट्स में साइमलिंक फ़ाइल का आकार है।

साइमलिंक फ़ाइल एक सामान्य फ़ाइल है जो उस डेटा को संग्रहीत करती है जहां यह इंगित करने वाली फ़ाइल है। एक्सट 4 में यह 7 बाइट्स है।


आकार में क्या? यह बाइट्स या बिट्स या क्या है?
Maythux

बाइट्स में आकार ..
पायलट 6

1
फिर du -sh symfile0 क्यों देता है?
Maythux

डु बहुत छोटी फाइलों के साथ निर्धारित नहीं है। कुछ 99 बाइट्स फ़ाइल में डु का उपयोग करने का प्रयास करें। यह 4.0K दिखाएगा।
पायलट 6

यही कारण है कि यह भी मेरी कमानी है तो इसे कम से कम 4k को सिम्कलिन के लिए दिखाना चाहिए क्योंकि OS कॉन्सेप्ट में यह इस फाइल के लिए क्लस्टर का
पंजीयन कर रहा है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.