`du -s. 'และ` du -hs.' ให้ผลลัพธ์ที่แตกต่าง (บน OS X)


12

ความแตกต่างที่มีและไม่มี-hควรเป็นหน่วยที่มนุษย์อ่านได้ใช่ไหม

เห็นได้ชัดว่าไม่มี ...

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

หรือบางทีฉันเข้าใจผิดและผลลัพธ์ที่du -s .ไม่ได้อยู่ในหน่วย KB?


3
ลองใช้du --block-size=1024 -s .ดู บางทีคุณอาจBLOCK_SIZEถูกกำหนดให้เป็น512
Echoes_86

6
จากหน้าคู่มือ (OSX): "หากไม่ได้ตั้งค่า BLOCKSIZE และไม่ได้ระบุตัวเลือก -k การนับบล็อกจะปรากฏในบล็อกขนาด 512 ไบต์"
user4556274

ซึ่งไม่เป็นประโยชน์อย่างยิ่งหากระบบไฟล์เป็นจริงในบล็อก 4096- ไบต์
DopeGhoti

ดังนั้นจึงไม่มีวิธีที่จะมีขนาดเป็นไบต์? ฉันคิดว่า-hมันแค่หารด้วย 1024 และเพิ่มบางหน่วย
Creak

2
echo "74216696*512" | bcผลลัพธ์, 37998948352 และใช่-hแปลงเป็นรูปแบบที่มนุษย์อ่านได้โดยการหารซ้ำแล้วซ้ำอีก 1024 โดยสิ่งที่ฉันได้รับคือ 35.3887 ซึ่งใกล้เคียงกับduรายงานมาก --block-size=1สำหรับขนาดในไบต์เพียงแค่ใช้ บน Linux มี-bตัวเลือกสำหรับสิ่งนั้น แต่ฉันไม่คุ้นเคยกับ OS Xdu
Sergiy Kolodyazhnyy

คำตอบ:


23

duโดยไม่ต้องมีรูปแบบการออกระบุจะช่วยให้การใช้งานดิสก์ในบล็อก 512 ไบต์ไม่กิโลไบต์ คุณสามารถใช้ตัวเลือก-kเพื่อแสดงเป็นกิโลไบต์แทน บน OS X (หรือ MacOS หรือ MacOS หรือ MacOS; ใดก็ตามที่คุณชอบ) คุณสามารถปรับแต่งหน่วยเริ่มต้นโดยการตั้งค่าตัวแปรสภาพแวดล้อมBLOCKSIZE(นี้มีผลต่อคำสั่งอื่น ๆ เช่นกัน)


1
ไม่ทราบว่า ... มีความสนใจในการมีจำนวนบล็อกคืออะไร? ฉันไม่เคยเห็นคนคนหนึ่งโดยใช้บล็อกเมื่อพูดคุยเกี่ยวกับขนาดบนดิสก์ ...
เสียงดังเอี๊ยด

2
Blocks เป็นหน่วยของอะตอมของระบบไฟล์ ไฟล์ใด ๆ จะใช้จำนวนบล็อกทั้งหมดในดิสก์ บล็อกอาจเต็มไปด้วยข้อมูลจริงเพียงบางส่วนเท่านั้น แต่บล็อกทั้งหมดจะถูกจัดสรรไปยังไฟล์ การใช้งานแบบวันต่อวันของคนส่วนใหญ่ไม่สนใจบล็อกอื่นนอกเหนือจากการใช้เปอร์เซ็นต์เทียบกับฟรี แต่สาธารณูปโภคในระดับต่ำ (เช่นfdisk, dfและdu) การทำงานในบล็อกเว้นแต่กำกับอย่างอื่นเพราะเห็นว่าเป็นหน่วยโดยที่พวกเขานับภายใน
DopeGhoti

1
@ ทำลายจริงส่วนหนึ่งของคำตอบนั้นผิด หน่วยไม่ใช่ขนาดบล็อกของระบบไฟล์ สำหรับวัตถุประสงค์ของคำสั่ง Unix แบบคลาสสิกเช่นdu“ block” หมายถึง 512 ไบต์ ดูขนาดไฟล์บล็อก - ความแตกต่างระหว่างสถิติและ LS , ความแตกต่างระหว่างบล็อกขนาดและขนาดของคลัสเตอร์
กิลส์ 'ทีเราหยุดการชั่วร้าย'

3
"ไฟล์ใด ๆ จะใช้จำนวนบล็อกทั้งหมดในดิสก์" ดีโดยทั่วไปใช่เว้นแต่ระบบแฟ้มของคุณใช้บรรจุหาง แต่ใช่บล็อกเป็นหน่วยพื้นฐานของระบบไฟล์ (แม้ว่าขนาดบล็อกที่แท้จริงไม่จำเป็นต้องสอดคล้องกับขนาดบล็อกที่ใช้du) :)
Wildcard

3

ปัญหาคือduส่งคืนขนาดเป็นบล็อกจำนวน 512 ไบต์

เพื่อให้มีขนาดเป็น KB คุณสามารถใช้-kตัวเลือกที่ใช้บล็อก 1024- ไบต์แทน:

$ du -ks .                            
43351596    .
$ du -khs .
 41G    .
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.