df和du这两个命令df和du这两个命令df命令df --help,可以查看df命令的帮助信息。df命令的:
Show information about the file system on which each FILE resides, or all file systems by default.
df命令实际是disk FileSystem的缩写,用于展示文件系统的信息df是disk free的缩写,用于展示文件系统总空间、可用空间等信息
The df command (short for disk free), is used to display information related to file systems about total space and available space.
df命令,就是为了查看磁盘空间的使用情况最简单的使用方法:df,会以K为单位,展示已挂载的文件系统的磁盘使用情况:

默认以K为单位,展示文件系统的磁盘使用情况
通过-B指定单位,从而以1024或者1000的进制展示磁盘使用情况
SIZE is an integer and optional unit (example: 10M is 1010241024). Units are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, … (powers of 1000).
例如,以G(1024进制)为单位展示磁盘使用情况
df -B G
# 相同的效果
df -BG
展示效果如下:

-h增强可读性G,还是有部分文件系统的磁盘使用情况可读性较弱,如上面截图中/dev/sdg1-h选项,可以满足该需求
-H使用1000进制使用-h以合适的单位展示磁盘使用情况时,进制为1024,可以使用-H指定1000的进制
df -hH
效果如下:

注意: -h和-H,都不是--help的缩写
df命令还可以展示文件系统的类型(type),可以通过大写的-T选项让其展示文件系统的类型

有时,我们希望查看指定类型的文件系统 —— 可以通过小写的-t选项实现
df -hT -t xfs
最终,将只展示xfs类型的文件系统

有时,我们希望展示除某种类型外的、其他类型的文件系统 —— 可以通过-x选项实现
df -hT -x xfs
最终,将展示非xfs类型的文件系统

学到了这里,貌似df命令没啥用 😂
实际工作中,经常会遇到类似的情况:想往目录 /bigdata/benchmark写入一个100GB的文件,对应的磁盘是否有足够的空间呢?
这时,df命令非最佳实践就出现了:通过指定目录,知道对应磁盘的可用空间,从而避免磁盘写满、影响系统或程序的正常运行
df -h /bigdata/benchmark
从执行结果可以看出,完全可以向 /bigdata/benchmark目录写入一个100GB的文件

df命令实际比较简单,而本人最常使用的就是df -h或df -h /dir了du命令du --help查看du命令的帮助信息,对该命令的描述如下:
Summarize disk usage of each FILE, recursively for directories.
du可以看做是disk usage的缩写,会统计目录下的文件、子目录所占用的磁盘大小,也就是会统计该目录大小
使用du统计文件(目录)大小时,需要指定文件。
du /bigdata/benchmark/
递归展示/bigdata/benchmark/目录下,各子目录以及自身的大小

若不指定文件,则统计当前目录./的大小

同df一样,可以通过-B选项指定单位,从而方便阅读

除此之外,du命令还允许通过-b、-k、-m直接指定单位
-h增加可读性h选项以合适的单位进行展示
上面的执行结果,只展示了指定目录及其子目录的大小。然而,在排查大文件时,我们还想知道目录下的文件大小
这时,可以使用-a选项,同时统计文件和目录的大小
du -ah /bigdata/presto-cli/
最终,/bigdata/presto-cli/目录下各文件的大小也将会统计

-a选项:只展示指定目录的大小使用du统计目录大小时,会发现如果该目录存在很多的子目录,展示的结果就跟cat一个文件的内容一样:一下子打印太多,反而干扰了关键信息的展示
有时,我们只想知道当前目录的大小,不用统计其子目录的大小
这时,可以使用-s选项,只展示该目录的大小
du -sh /bigdata/presto-cli/
-d选项:只展示指定层级的目录大小很多时候,目录的层级很深,通过du命令查看目录大小时,不需要知道底层子目录的大小,只需要知道最上面几层子目录的大小
以/bigdata/compile目录为例,其子目录的层级非常深

如果直接使用du -h /bigdata/compile查看目录大小,最后打印的信息会把眼睛都给闪瞎 😂
这时,可以使用-d选项限制目录层级,-d选项是--max-depth的缩写
例如,下面就是使用-d选项,只统计第一层子目录的大小
du -h -d 1 /bigdata/compile/
也可以直接使用--max-depth,效果一样
du -h --max-depth=1 /bigdata/compile/
一般的话,如果是排查目录下的大文件,我会这样使用du命令:
/dir从而层层逼近大文件所在的目录du -ah --max-depth=1 /dir
除此之外,还有一些本人步长使用的选项
--time,获取目录下文件或子目录的最近修改时间

--exclude=PATTERN选项,忽略满足正则表达式的文件

df命令: disk free的缩写,可以用于查看某个目录所在磁盘的剩余空间,避免大量文件写入该目录,导致磁盘爆满du命令:disk usage的缩写,可以用于统计目录大小,在发现目录中的大文件十分有用