Disk-Usage
如何確定哪個程序正在耗盡所有可用磁碟空間?
突然,所有可用的磁碟空間
/
都消失了。如果我在磁碟中騰出空間(例如,通過刪除 ~50GB 的東西),幾分鐘後我會回到 0 可用磁碟空間(根據
df
)。顯然,某些程序正在快速消耗磁碟空間,但我不知道它是什麼。
不過有一點是肯定的:不管它是什麼,它一定會創建許多小文件,因為磁碟上沒有大於 10GB 的文件,而且所有大於 1GB 的文件都比今天老得多。
如何找到佔用磁碟空間的內容?
FWIW,只
df
看到問題,而不是du
.例如,下面我展示了幾個 60 年代的“快照
du
”df
。分開。(我在磁碟中騰出一些空間後才這樣做。)請注意du
’ 的輸出如何保持穩定(在495G
),但df
顯示可用空間量穩步減少。(我已遵循此處給出的建議。IOW/mnt/root
指向/
。)# while true; do du -sh /mnt/root && df -h /mnt/root; sleep 60; done 495G /mnt/root Filesystem Size Used Avail Use% Mounted on /dev/sdb1 880G 824G 12G 99% /mnt/root 495G /mnt/root Filesystem Size Used Avail Use% Mounted on /dev/sdb1 880G 825G 11G 99% /mnt/root 495G /mnt/root Filesystem Size Used Avail Use% Mounted on /dev/sdb1 880G 827G 8.9G 99% /mnt/root 495G /mnt/root Filesystem Size Used Avail Use% Mounted on /dev/sdb1 880G 827G 8.1G 100% /mnt/root 495G /mnt/root Filesystem Size Used Avail Use% Mounted on /dev/sdb1 880G 828G 7.5G 100% /mnt/root
您正在處理已刪除的文件,這就是為什麼
du
不註冊已用空間,但df
確實如此。刪除的文件只有在所有者程序停止後才會消失;它們仍然在使用,而這並沒有發生。
因此,要找到罪魁禍首過程,我建議您這樣做:
sudo lsof -nP | grep '(deleted)'
然後殺死程序。
sudo kill -9 $(lsof | grep deleted | cut -d " " -f4)
您可以使用
iotop
來查看哪些程序正在執行最多的磁碟寫入操作。例子:
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] 3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0] 6 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0] 7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0] 8 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1]