df和du的区别

虽然知道这两个命令,平时也一直在用,但细想,也就会用,而且时简单用,
常用df查询当前挂载磁盘的使用情况,用du查看当前目录哪个文件占用较多;
df -h
du -ah -d 1
最近被人问起两者的区别,有点蒙圈,这里小结下:
问题:

  1. du df 区别
  2. du df 查看的空间为什么不一致

概念:
du estimates and displays the disk space used by files.
可知du基于文件计算和显示磁盘占用情况,
常用命令:

MacBook-air:/ root# du -csh    //统计当前目录占用
 82G    .
 82G    total
MacBook-Air:/ root# du -h -d 1 //统计depth为1所有文件目录占用
 56M    ./.DocumentRevisions-V100
 33M    ./.fseventsd
684M    ./.Spotlight-V100
  0B    ./.Trashes
  0B    ./.vol
 13G    ./Applications
2.5M    ./bin
  0B    ./cores
160M    ./data
4.5K    ./dev
1.0K    ./home
6.3G    ./Library
1.0K    ./net
  0B    ./Network
157M    ./opt
6.2G    ./private
1.0M    ./sbin
5.8G    ./System
 49G    ./Users
540M    ./usr
4.0K    ./Volumes
 82G    .

The df command reports the amount of available disk space being used by file systems.
基于文件系统,意味着不会根据文件是否存在判断当前目录的磁盘占用

yuciermatoMacBook-Air:/ root# df -h  //查看根目录磁盘使用情况
Filesystem      Size   Used  Avail Capacity  iused   ifree %iused  Mounted on
/dev/disk1     112Gi   83Gi   29Gi    75% 21837449 7484277   74%   /
devfs          179Ki  179Ki    0Bi   100%      620       0  100%   /dev
map -hosts       0Bi    0Bi    0Bi   100%        0       0  100%   /net
map auto_home    0Bi    0Bi    0Bi   100%        0       0  100%   /home

回到之前的问题,du和df查看的目录大小不一致,du只会根据目录存在的文件进行统计,如果某个正在运行的进程进行io的文件被删除,du不会统计,但因为对应的句柄未释放,文件系统中仍有此句柄,df仍会有对应的统计;

引用:
[1] https://www.computerhope.com/unix/udu.htm
[2] https://www.computerhope.com/unix/udf.htm

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容