du(disk usage) 是 通过搜索文件
来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的
。他计算的大小就是当前他认为存在的所有文件大小的累加和
。
du -sh *
df(disk free) 通过文件系统
来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失
了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件
, df记录的是通过文件系统获取到的文件的大小,他比du强的地方就是能够看到已经删除的文件
,而且计算大小的时候,把这一部分的空间也加上了,更精确了。当文件系统也确定删除了该文件后,这时候du与df就一致了。
df -h
du和df不一致情况原因:
常见的df和du不一致情况就是文件删除的问题。当一个文件被删除后,在文件系统 目录中已经不可见了,所以du就不会再统计它了。然而如果此时还有运行的进程持有
这个已经被删除了的文件的句柄
,那么这个文件就不会真正在磁盘中被删除
,分区超级块中的信息也就不会更改。这样df仍旧会统计这个被删除了的文件。
查看被删除的文件被哪些进程引用
lsof -s|grep deleted|sort -nr -k7|less,需要删文件&干掉进程,才能真正将文件删除