我无法准确确定哪个文件正在占用我的磁盘。
首先,我使用df
命令列出我的目录:
devtmpfs 16438304 0 16438304 0% /dev
tmpfs 16449868 0 16449868 0% /dev/shm
tmpfs 16449868 1637676 14812192 10% /run
tmpfs 16449868 0 16449868 0% /sys/fs/cgroup
/dev/mapper/fedora-root 51475068 38443612 10393632 79% /
tmpfs 16449868 384 16449484 1% /tmp
/dev/sda3 487652 66874 391082 15% /boot
/dev/mapper/fedora-home 889839636 44677452 799937840 6% /home
然后我就跑了du -h / | grep '[0-9\,]\+G'
。
问题是我得到了包括其他目录在内的所有内容,因此我需要专门查找,/dev/mapper/fedora-root
但当我尝试时却du -h /dev/mapper/fedora-root | grep '[0-9\,]\+G'
没有得到任何结果。
我需要知道79%
目录被什么占用了/
我该如何解决这个问题?
答案1
在这种情况下我的魔法命令是:
du -m . --max-depth=1 | sort -nr | head -20
要使用这个:
cd
进入包含占用空间的文件的顶级目录。/
如果您不知道的话,这可能是;-)- 跑步
du -m . --max-depth=1 | sort -nr | head -20
。这将列出当前目录的 20 个最大子目录,按大小递减排序。 cd
进入最大的目录并重复命令,du ...
直到找到大文件
答案2
-x
如果您只想保留在一个文件系统上而不遵循符号链接,则可以使用。例如,作为 root:
ncdu -x /home
它的命令行相当于雏菊盘,猴面包树或者WinDirStat。
扫描大文件夹可能需要很长时间,但一旦完成,就可以很快找到最大的文件。
答案3
如果您对文件的实际大小有感觉,您可以find
大于特定大小的文件。
例如,要查找大于 10 MiB 的文件:
find /mounted/drive -size +10M
或者
find /mounted/drive -size +10M -exec ls -lh {} +
如果问题不是一个大文件而是一大堆小文件的集合,Httqm 的建议也很好。那就是使用du
显示目录总数。限制 with--max-depth
对于大型目录树非常有用:
du -m some/directory --max-depth=1 | sort -nr | head -20
du some/directory --max-depth=1 | sort -n | tail -21
将把单个目录分解为子目录,其中第二个目录也为您提供所列出的目录的总数。
答案4
使用此命令找出最大的目录:
du -a / | sort -n -r | head