两台mac笔记本硬盘都是128G的空间,致使须要按期手动清理硬盘;测试服务器是两套环境共享100G的空间,清理环境的首要问题就是找到空间被谁占用了,重要的工具就是du和df;linux
1 du的工做原理服务器
du命令会对待统计文件逐个调用fstat这个系统调用,获取文件大小。它的数据是基于文件获取的,因此有很大的灵活性,不必定非要针对一个分区,能够跨越多个分区操做。若是针对的目录中文件不少,du速度就会很慢了。工具
2 df的工做原理测试
df命令使用的事statfs这个系统调用,直接读取分区的超级块信息获取分区使用状况。它的数据是基于分区元数据的,因此只能针对整个分区。因为df直接读取超级块,因此运行速度不受文件多少影响。spa
3 du和df不一致状况模拟进程
常见的df和du不一致状况就是文件删除的问题。当一个文件被删除后,在文件系统 目录中已经不可见了,因此du就不会再统计它了。然而若是此时还有运行的进程持有这个已经被删除了的文件的句柄,那么这个文件就不会真正在磁盘中被删除, 分区超级块中的信息也就不会更改。这样df仍旧会统计这个被删除了的文件。原理
通常使用df查看整个硬盘的使用状况,du查看局部硬盘占用状况; 统计
linux通常使用命令进行查看一级目录的大小:du -h --max-depth=1(mac下没法使用)数据
mac系统使用命令进行查看一级目录的大小:du -sh *(兼容linux)兼容