如何查看 UNIX 中哪些文件占用了最多空间?

问题描述 投票:0回答:4

我使用了

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
unix
4个回答
5
投票

查找大文件(有名称)的技巧通常是

du -a
,通常通过管道输入
sort -n
。这会为您提供最后的最大文件(因此小文件从页面顶部消失并不重要)。

您可能有一个进程仍在运行,并且打开了一个无名文件,当有机会时它会写入该文件,这会耗尽空间。这可能是它打开来存储数据的临时文件,也可能是某人删除的日志文件。它使用的空间不会显示为可用空间,但也不会显示为与

du -a
(或任何其他选项)一起使用,因为没有文件名。如果您不知道它是哪个进程,您可以使用重新启动来停止该进程(所有进程),从而释放空间。


0
投票

参考

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.

由于这是默认设置,我猜测您将获得可用空间的缓存视图。


0
投票

使用以下命令检查磁盘空间:

df -lh

0
投票

您可以递归地搜索大于特定大小的文件。对我来说,这个命令非常适合解决磁盘空间问题:

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 的命令。
© www.soinside.com 2019 - 2024. All rights reserved.