本博客用来记录在服务器上发现 /home
存储空间异常占用后,如何排查每个用户的空间使用情况,以及如何快速找出当前目录(包含隐藏文件夹)下最大的前 10 个文件。
服务器 /home
目录高占用,如何排查?
最近在一台多用户服务器上发现 /home
目录几乎被占满,一查竟然使用了 915G!由于我们已经把大部分大型数据集额外存放到其他挂载点,按理说 /home
目录不应该有如此大的占用。服务器上有多个用户共同使用,因此需要先统计各个用户的主目录所占用的空间,确认究竟是谁的文件占据了硬盘。
1. 查看各个用户在 /home
目录下占用的空间
如果每位用户在 /home
下都有各自的独立目录(如 /home/alice
, /home/bob
, 等),可以使用 du -sh
命令来查看每个子目录的总大小。示例命令如下:
需要使用管理员root权限
du -sh /home/*
du
:显示文件或目录占用的磁盘空间。-s
:只显示汇总(summary)而不是详细列出所有子文件。-h
:以人类可读的方式显示,如 K、M、G 等。
执行后,会得到类似下面的输出:
47G /home/AAA
579G /home/BBB
19G /home/CCC
...
一眼就能看到 /home/BBB
目录下使用了 579G,这显然非常异常,也就找到了我们要重点排查的用户。
注意:如果
/home
下的用户目录并不是直接/home/用户名
,而是有其他命名方式或层级,需要根据实际目录结构修改du
命令的路径和匹配方式。
2. 在大目录下进一步排查:找出最大的文件与最大的文件夹
2.1 找到当前目录(含子目录)下「最大的 10 个文件」
进入要排查的目录,比如 /home/zhanyong
:
cd /home/zhanyong
find . -type f -exec du -h