Linux & Unix 中 df 和 du 命令统计磁盘空间数值不一致
经常会使用 df 和 du 分别查看磁盘空闲空间和占用空间,偶尔会发现 df(空闲空间) 会小于磁盘大小减去 du(占用空间)。
两个命令实现目的是一样的,但是实现的过程有着本质的区别。就像两个人是到同一个地方,但走不同的路,所以路程的长短也就不同。
df 命令的全称是 Disk Free ,显而易见它是统计磁盘中空闲的空间,也即空闲的磁盘块数。它是通过硬盘分配图进行计算出的。
du 命令的全称是 Disk Used ,它是统计磁盘有已经使用的空间。它是直接统计各各目录的大小,而不是从硬盘获得信息的。
通常会遇到两个情况:
1、du命令是用户级的程序,它不考虑元数据,而df命令则查看文件系统的磁盘分配图并考虑。df命令获得真正的文件系统数据,而du命令只查看文件系统的部分情况。
2、如果用户删除了一个正在运行的应用所打开的某个目录下的文件,则du命令返回的值显示出减去了该文件后的目录的大小。但df命令并不显示减去该文件后的大小,直到该运行的应用关闭了这个打开的文件,df返回的值才显示出减去了该文件后的文件系统的使用情况。