![如何在不安装任何东西的情况下找到占用所有磁盘空间的大文件?](https://linux22.com/image/213640/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E5%AE%89%E8%A3%85%E4%BB%BB%E4%BD%95%E4%B8%9C%E8%A5%BF%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E6%89%BE%E5%88%B0%E5%8D%A0%E7%94%A8%E6%89%80%E6%9C%89%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4%E7%9A%84%E5%A4%A7%E6%96%87%E4%BB%B6%EF%BC%9F.png)
所以,问题是,如果您的系统完全被一个巨大的文件阻塞,并且您知道没有任何可以删除的内容,那么所有那些展示管理文件系统的闪亮工具的教程都没有那么有用。
碰巧这就是我的情况:我有一个开发虚拟机,我完全用测试数据填充了它,但我不确定它们在哪里(抽象层太多,我不只是简单地写在磁盘上)。我知道我可以删除的东西并不多,只有源代码和基本操作系统。许多命令不起作用,因为没有任何磁盘空间。
如何找到该测试文件的最终位置并将其删除?
答案1
您应该尝试:
find /directory -type f -size +10G
10G适合自己喜欢的大小
答案2
检查磁盘空间使用情况的另一种方法是使用du
.
使用du
,您可以使用以下标志来细分大部分驱动器使用情况;-s
是总结(例如,仅显示目标的总数。) -h
是为了人类可读(例如 100K 或 212M 或 89G。) -c
是在最后获得使用情况的总计。 -x
是将搜索保持在一个文件系统上(例如,在操作系统驱动器上,如果您在搜索中的某个位置安装了文件系统,就像我运行此命令时在 /mnt 下所做的那样。)
所以,这是一个例子:
~ # du -shcx /*
11M /bin
4.0K /boot
0 /dev
24M /etc
212G /home
2.6G /lib
18M /lib64
16K /lost+found
4.0K /media
2.6G /mnt
188G /opt
du: cannot access '/proc/24898/task/24898/fd/4': No such file or directory
du: cannot access '/proc/24898/task/24898/fdinfo/4': No such file or directory
du: cannot access '/proc/24898/fd/4': No such file or directory
du: cannot access '/proc/24898/fdinfo/4': No such file or directory
0 /proc
15G /root
2.4M /run
16M /sbin
0 /sys
1.1M /tmp
131G /usr
21G /var
570G total
而且,在您发现使用率最高的地方,只需深入到该目录的下一级并继续下去,直到找到使用所有驱动器空间的文件所在的位置。
希望有帮助。
答案3
您可以在安装了或的du
另一个系统上获取磁盘使用情况并对其进行分析:xdu
xdiskusage
ssh user@vm 'du -xak / | gzip -1' | gunzip | xdiskusage
假设您的文件/目录名称中没有包含换行符。如果可能有:
ssh user@vm 'du -0xak / | gzip -1' | gunzip | tr '\0\n' '\n?' | xdiskusage
?
(换行符将按照中的方式呈现xdiskusage
)。
请注意,磁盘空间可能被已删除但仍在被某些进程使用的文件使用。看查找并删除打开但已被删除的大文件对于那些。