日常运维时,经常遇到磁盘存储空间不足的告警,我们就需要找到哪个目录占用的空间最大。通常先看一下根目录下各个子目录的大小,找到占用最大的文件夹,然后再一级级的找下去。这就要用到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
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/1226.html