我使用了
du -h
和df -h
,但我似乎无法确定哪些实际文件占用了空间。当我删除文件时df -h
仍然说磁盘已满。另外,当我删除基于du -h
的文件时,sda2的空间并没有减少。
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 13G 12G 0 100% /
/dev/sda1 251M 21M 218M 9% /boot
tmpfs 1006M 0 1006M 0% /dev/shm
查找大文件(有名称)的技巧通常是
du -a
,通常通过管道输入 sort -n
。这会为您提供最后的最大文件(因此小文件从页面顶部消失并不重要)。
您可能有一个进程仍在运行,并且打开了一个无名文件,当有机会时它会写入该文件,这会耗尽空间。这可能是它打开来存储数据的临时文件,也可能是某人删除的日志文件。它使用的空间不会显示为可用空间,但也不会显示为与
du -a
(或任何其他选项)一起使用,因为没有文件名。如果您不知道它是哪个进程,您可以使用重新启动来停止该进程(所有进程),从而释放空间。
参考
df
手册页:
`--no-sync'
Do not invoke the `sync' system call before getting any usage data.
This may make `df' run significantly faster on systems with many
disks, but on some systems (notably SunOS) the results may be
slightly out of date. This is the default.
由于这是默认设置,我猜测您将获得可用空间的缓存视图。
使用以下命令检查磁盘空间:
df -lh
您可以递归地搜索大于特定大小的文件。对我来说,这个命令非常适合解决磁盘空间问题:
find / -type f -size +100M -exec du -h {} \;
find /
:这部分告诉 find 命令从根目录(/)开始搜索整个文件系统。type f
:此选项指定 find 应该只查找常规文件(而不是目录、符号链接等)。size +100M
:此选项告诉 find 仅查找大于 100 兆字节 (M) 的文件。 + 号表示“大于”。exec du -h {}
;: 这部分对find找到的每个文件执行du -h命令。
exec
:此选项告诉 find 对每个匹配的文件执行命令。
du -h:这是要执行的命令。 du 计算磁盘使用情况,-h 使输出可读(例如,以 GB、MB 等为单位显示大小)。{}
:这是 find 找到的文件名的占位符。这 ;终止传递给 -exec 的命令。