ทำไมคำสั่ง“ df” และ“ du” แสดงการใช้งานดิสก์ที่แตกต่างกัน?


26

ฉันไม่สามารถเข้าถึงระบบอูบุนตูบนพีซีของฉันข้อความแสดงข้อผิดพลาด: " ระบบกำลังทำงานในโหมดกราฟิกต่ำ " และฉันลองใช้คำสั่งบางอย่างที่ฉันค้นหาจากอินเทอร์เน็ต

ฉันพบปัญหาดูเหมือนว่าไม่มีพื้นที่ว่างในดิสก์ ฉันใช้คำสั่ง " df " และ " du " เพื่อตรวจสอบผลลัพธ์มีดังนี้:

du -j --max-depth=1
23G  ./home
3.3G ./usr 
...... 
28G

และ

df -Th 
filesystem   Type   size    used   available   use%    mounted on 
/dev/sda5    ext4   68G     68G    0           100%    /

ฉันจะล้างระบบสำหรับพื้นที่ดิสก์เพิ่มเติมได้อย่างไร


คำถามในชื่อเรื่องและตอนท้ายของเนื้อหาคำถามนั้นค่อนข้างแตกต่างกัน คำตอบบางคำถามเกี่ยวข้องกับคำถามหนึ่ง คุณควรชี้แจงความต้องการที่แท้จริงของคุณและยอมรับคำตอบด้วย
Melebius

คำตอบ:


50

คุณอาจรู้ว่าคุณสามารถลบไฟล์ที่ยังคงใช้งานโดยแอพพลิเคชั่นบางตัวและสำหรับแอพพลิเคชั่นนี้ยังคงมีอยู่ เป็นเพราะตัวอธิบายไฟล์ใน / proc / filesystem ถูกเปิดค้างไว้

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

คุณสามารถค้นหาไฟล์ที่ยังไม่ได้เชื่อมโยง แต่เก็บไว้เปิดไฟล์ด้วย:

# lsof | grep '(deleted)'

7
นี่เพิ่งช่วยฉัน ไม่รู้เลยว่าทำไมดิสก์ของฉันถึงเต็ม แต่ du บอกว่ามันว่างเปล่า ตัวจัดการไฟล์แบบเปิดสำหรับไฟล์ 8GB
Cheyne

5
ฉันจะลบลิงค์ได้อย่างไร
Vikas Hardia

1
บางครั้งคุณต้องดำเนินการสิ่งนี้ในฐานะรูทเพื่อดูไฟล์ที่ถูกลบที่ค้างอยู่เปิดโดยกระบวนการของผู้ใช้อื่น
Envek

1
สาเหตุของเรื่องนี้สำหรับผมจบลงด้วยการเป็นสเป็คล็อกไฟล์ที่ไม่ถูกต้องในหนึ่งในของฉัน/etc/logrotate.dไฟล์ รายการไม่ถูกต้องขาดรูทีน postrotate ซึ่งทำให้กระบวนการ daemon ของฉันไม่ปล่อยไฟล์ที่ถูกหมุน / ลบ
เดลเดอร์สัน

ฉันจะลบไฟล์ที่ไม่ได้ลิงก์ แต่เปิดไฟล์ได้อย่างไร
zx1986

14

ฉันจะลบลิงค์ได้อย่างไร - Vikas Hardia 22 ส.ค. '14 ที่ 5:46

คุณต้องค้นหากระบวนการที่มีการจัดการไฟล์ ใช้คำสั่งของ Dmitry Alexandrov ที่นั่นคุณเห็นกระบวนการและ pid ในกรณีของเราและ "ล็อก" ไฟล์บันทึกวานิชเป็นตัวทำลายช่องว่าง

# lsof | grep '(deleted)'
[...]
varnishlo 13978       varnishlog    3w      REG              252,1 318448027646    5926973 /var/log/varnish/varnish.log.1 (deleted)
apache2   16801         www-data    2w      REG              252,1        64550   13110120 /var/log/apache2/error.log.1 (deleted)
[...]
# service varnishlog stop
[or if there is no service script]
# kill -11 13978 (the second number of the lsof command is the pid)
[or may be] 
# kill -9 13978

อย่าลืมที่จะเริ่มบริการหรือกระบวนการอีกครั้งถ้ามันเป็นปีศาจหรือบริการอื่น ๆ ในคอมพิวเตอร์ของคุณ หากทำได้ให้รีบูตคอมพิวเตอร์;)


9

ตกลงให้ตรวจสอบหน้าคน:

df - รายงานการใช้พื้นที่ดิสก์ของระบบไฟล์

และ

du - การใช้พื้นที่ไฟล์โดยประมาณ

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

สรุปการใช้งานดิสก์ของแต่ละไฟล์เรียกซ้ำสำหรับไดเรกทอรี

มันบอกว่าduทำงานกับไฟล์

dfแสดงจำนวนพื้นที่ว่างดิสก์ที่มีอยู่ในระบบไฟล์ที่มีอาร์กิวเมนต์แต่ละชื่อไฟล์ หากไม่ได้ระบุชื่อไฟล์พื้นที่ที่มีอยู่ในระบบไฟล์ที่เมาท์ทั้งหมดในปัจจุบันจะปรากฏขึ้น

นี่บอกว่าdfไม่สนใจเกี่ยวกับไฟล์ แต่เป็นระบบไฟล์เอง


การใช้ du สามารถแก้ไขได้ด้วยอักขระ -x เพื่อบอกให้นับเฉพาะไฟล์ในระบบไฟล์ที่กำหนด
macetw

1

พูดง่าย ๆ ว่า:

คุณวิ่งduโดยไม่มีการอนุญาตรูท ดังนั้นจึงไม่สามารถตรวจสอบพื้นที่ว่างใน/proc, /mntฯลฯ โฟลเดอร์

df แสดงให้เห็นว่ามีการใช้พื้นที่ว่าง & ทั้งหมดตามลำดับ

ดังนั้นเมื่อคุณตรวจสอบระบบไฟล์ลินุกซ์รูทให้ทำduรายงานขั้นสุดท้าย


0
df

สรุปพื้นที่ว่างในดิสก์

จะแสดงจำนวนพื้นที่ดิสก์ที่มีอยู่

du

สรุปการใช้งานดิสก์

จะแสดงจำนวนพื้นที่ดิสก์ที่ใช้


ใช่ แต่ในผลลัพธ์ของ "df -Th" มันแสดงให้เห็นว่าใช้ 68G เช้าวันนี้เมื่อฉันพยายามเข้าถึงระบบ Ubuntu มันยังคงให้ข้อความ "ระบบกำลังทำงานในโหมดกราฟิกต่ำ" แต่เมื่อฉันตรวจสอบการใช้หน่วยความจำคำสั่ง "df" และ "du" จะแสดงผลลัพธ์ที่สมเหตุสมผล แต่ปัญหาของ "โหมดกราฟิกต่ำ" คืออะไร
user2068965

ลองดูที่นี่
Mitch

0

ไม่มีอะไรที่ทำให้สับสนมาก: นี่คือรูปลักษณ์: =

1) du == การใช้งาน
ดิสก์ไฟล์เหล่านี้มีการใช้พื้นที่ดิสก์เท่าใด

2) df == Disk Free
เรามีพื้นที่ว่างในดิสก์เท่าใด

นอกจากนี้สำหรับระบบกำลังทำงานในโหมดกราฟิกต่ำ ' ที่นี่ '


0

ฉันทำ
sudo du -hxa / | egrep '^[[:digit:]]{1,1}G[[:space:]]*'

มันเป็นสาเหตุที่ทำให้เกิดความแตกต่างอย่างมากของ 21GB ที่ฉันเห็น!
ไฟล์ที่มีปัญหาคือ / swap ไฟล์ถ้า 21GB !!

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