ทำไม df และ du แสดงเอาต์พุตต่างกัน


8

เมื่อฉันรันคำสั่งdf -h /tmpที่จะกล่าวว่าการใช้ดิสก์เป็น 100%แต่เมื่อมันพยายามที่du -sh /tmpจะกล่าวว่าการใช้ดิสก์ 2%

ฉันต้องการทราบว่าเหตุใดคำสั่งเหล่านี้จึงแสดงผลลัพธ์ที่ต่างกันวิธีการทำงานของทั้งสองคำสั่งและวิธีการแก้ไขปัญหานี้คืออะไร

บริบท: /tmpมีการติดตั้งในระบบไฟล์ของตัวเอง ฉันใช้เซิร์ฟเวอร์ Ubuntu 12.04 ในบัญชี VPS ของฉัน เนื่องจากอัตราการใช้ปัญหานี้ของ/tmp100% ตามที่บางโปรแกรมบ่นเกี่ยวกับพื้นที่ว่างในdf/tmp

คำตอบ:


10

du รายงานพื้นที่ว่างด้วยการสแกน inodes ที่สามารถเข้าถึงได้และคำนวณขนาดของมัน

หากไฟล์ถูกสร้างเปิดและลบในภายหลังในขณะที่ยังคงเปิดอยู่โปรแกรมที่เปิดจะยังคงสามารถเข้าถึงไฟล์ได้และสามารถเขียนและอ่านไปยังตำแหน่งหน่วยความจำนั้นบนดิสก์ได้ duไม่ได้พิจารณาถึงไฟล์ที่เปิดอยู่ แต่อย่างdfใด

การรีสตาร์ทง่าย ๆ ควรทำการฟลัช / tmp และแก้ปัญหาของคุณ

อีกทางเลือกหนึ่งคือการสแกนไฟล์ที่เปิดและรีสตาร์ทหรือฆ่ากระบวนการที่ไม่ปล่อยไฟล์ที่ถูกลบ


1

ไฟล์บางไฟล์ในระบบไฟล์รูทสามารถซ่อนอยู่หลังจุดเมานต์ ไฟล์สามารถสร้างได้ภายใต้จุดเมานท์เมื่อไม่ได้ติดตั้งอุปกรณ์ที่เกี่ยวข้องและเมื่อติดตั้งอุปกรณ์อีกครั้งไฟล์จะไม่ถูกนับด้วยคำสั่ง du ปัญหาที่เป็นไปได้มากเมื่อมีความแตกต่างใหญ่ระหว่างผลลัพธ์ du และ df


การเล่นชนิดหนึ่ง นี่คือสาเหตุสำหรับฉัน
jdhildeb

-1

ให้แน่ใจว่าคุณเมื่อทำงานsudo duตัวอย่างเช่นถ้าคุณเรียกคุณจะไม่เห็นการใช้งานดิสก์จริงจนกว่าคุณจะเพิ่มdu -hs /*sudo

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