`du -s .` और` du -hs .` अलग-अलग परिणाम देता है (OS X पर)


12

के साथ और बिना अंतर -hकेवल मानव पठनीय इकाइयों होना चाहिए, सही?

खैर स्पष्ट रूप से नहीं ...

$ du -s .
74216696    .
$ du -hs .
 35G    .

या शायद मैं गलत हूँ और du -s .केबी में परिणाम नहीं है?


3
प्रयोग करके देखें du --block-size=1024 -s .। हो सकता है कि आपका BLOCK_SIZEसेट512
Echoes_86

6
(OSX) मैनुअल पेज से: "यदि BLOCKSIZE सेट नहीं है, और -k विकल्प निर्दिष्ट नहीं है, तो ब्लॉक काउंट 512-बाइट ब्लॉक में प्रदर्शित किया जाएगा"
user4556274

यदि फाइल सिस्टम 4096-बाइट ब्लॉक में वास्तव में सुपर-सहायक नहीं है।
डोपघोटी

तो बाइट्स में आकार के लिए कोई रास्ता नहीं है? मैं सोचा था कि -hसिर्फ 1024 विभाजित किया गया था और जोड़ने कुछ इकाइयों
चरमराहट

2
echo "74216696*512" | bcआउटपुट, 37998948352. और हाँ, -h1024 से अधिक से अधिक विभाजित करके मानव पठनीय रूप में परिवर्तित करता है। मुझे जो मिला वह 35.3887 था, जो भयानक रूप से उन duरिपोर्टों के करीब है । बाइट्स में आकार के लिए, बस का उपयोग करें --block-size=1। लिनक्स पर, उसके -bलिए विकल्प है, लेकिन मैं OS X से परिचित नहीं हूंdu
Sergiy Kolodyazhnyy

जवाबों:


23

duबिना आउटपुट फॉर्मेट के स्पेसिफिकेशन 512 बाइट्स के ब्लॉक में डिस्क का उपयोग करता है , किलोबाइट्स पर नहीं । आप -kइसके बजाय किलोबाइट में प्रदर्शित करने के विकल्प का उपयोग कर सकते हैं । OS X (या macOS, या MacOS, या Macos; जो भी आपको पसंद हो) पर, आप पर्यावरण चर सेट करके डिफ़ॉल्ट इकाई को अनुकूलित कर सकते हैं BLOCKSIZE(यह अन्य कमांड को भी प्रभावित करता है)।


1
नहीं पता था कि ... ब्लॉक की संख्या होने में क्या दिलचस्पी है? मैंने डिस्क पर आकारों के बारे में बात करते समय एक व्यक्ति को कभी भी ब्लॉकों का उपयोग करते नहीं देखा है ...
क्रिक

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

1
@ वास्तव में, जवाब का वह हिस्सा गलत था। इकाई फाइलसिस्टम का ब्लॉक आकार नहीं है। क्लासिक यूनिक्स कमांड जैसे प्रयोजनों के लिए du, "ब्लॉक" का अर्थ है 512 बाइट्स। फ़ाइल ब्लॉक आकार देखें - स्टेट और एलएस के बीच अंतर
गिल्स एसओ- बुराई को रोकें '

3
"कोई भी फ़ाइल डिस्क पर ब्लॉक की एक पूरी संख्या का उपभोग करेगी।" खैर, आम तौर पर हाँ-जब तक कि आपका फाइलसिस्टम पूंछ पैकिंग का उपयोग नहीं करता है । लेकिन हाँ, ब्लॉक फाइलसिस्टम की मूल इकाई है (हालाँकि वास्तविक ब्लॉक का आकार जरूरी नहीं कि ब्लॉक ब्लॉक आकार के अनुसार संरेखित हो du।) :)
Wildcard

3

समस्या यह है कि du512 बाइट्स के ब्लॉक की संख्या में आकार लौटाता है।

KB में आकार रखने के लिए, आप उस -kविकल्प का उपयोग कर सकते हैं जो 1024-बाइट ब्लॉक का उपयोग करता है:

$ du -ks .                            
43351596    .
$ du -khs .
 41G    .
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.