日常运维时,经常遇到磁盘存储空间不足的告警,我们就需要找到哪个目录占用的空间最大。通常先看一下根目录下各个子目录的大小,找到占用最大的文件夹,然后再一级级的找下去。这就要用到du(disk usage)命令
du - estimate file space usage
Summarize disk usage of each FILE, recursively for directories
从上述解释,du用于估算每个文件占用的空间,如果是文件夹,那么会递归估算。
- -s(summarize),总结性信息
- -h(human-readable),以人类易读的单位展示,比如大文件以G为单位,中文件用MB,小文件用KB
比如查看根目录下,一级子目录的大小
du -sh /*
或者先切换到根目录下,然后
du -sh ./*

也可以使用du -h --max-depth=1

我们知道,ll -h也可以查看大小,但是它只查看本级文件夹大小,而不包含子文件。也许你已经发现,文件夹的大小,基本都是4K,这4k是存储文件元数据所占有的空间。

疑问
从上图可以看出,对大多数文件,注意指的是文件而不是文件夹,ll 与du展示的大小一样,但qr_code.png,在ll中占据772,在du中占用4K,这是因为ll默认展示的是文件大小,而不是占用磁盘的大小,使用-s选项,可以查看分配的大小。

从这图也可以看出,文件夹实际大小和分配大小都是4K,而小文件,大小与占用磁盘大小可能不一样。
总结
查看文件夹(包含子目录)的大小,使用du -sh path/* 或者du -h --max-depth=1 path
参考
using-ls-to-list-directories-and-their-total-sizes
how-get-size-of-file-directory-linux

在日常运维中,当遇到磁盘空间不足的问题时,可以使用`du`命令来查找占用空间最大的目录。`du`命令可以递归估算文件和目录的磁盘使用情况。通过添加`-s`选项获取总结信息,`-h`选项以人类可读的单位显示大小。例如,`du -sh *`或`du -h --max-depth=1`可以查看根目录下各子目录的大小。`ll`命令虽然也能显示大小,但它不包括子目录。文件夹的大小通常为4K,这是由于文件元数据的存储。对于文件,`ll`和`du`的显示可能不同,因为`ll`显示的是文件大小,而`du`显示的是磁盘分配的大小。
1487

被折叠的 条评论
为什么被折叠?



