ls -l 、 du、 df 的区别

ls -l 显示的是文件的大小,du 显示的是文件占的磁盘的大小,df显示的整个文件系统的磁盘使用情况,是一个整体的概念,下面主要介绍ls -l和du的区别。


ls -l 中会显示文件的大小,但是对于一个目录而言,ls -l显示的是这个目录本身的大小,并不包括这个目录中文件的大小,默认的单位是字节。通过加 -h选项可以增加可读性,会自动加上单位。

对于一个普通文件而言,ls -l显示的是它的实际大小,并不按照文件系统中设置的block的大小来计算。例如新建一个文件,在其中输入一个字符‘a',那么使用ls -l显示的是2字节,因为结尾有一个空字符,代表字符串的结束。

但是对于一个空的目录文件,却显示的是4k,一个block的大小,不知道为什么。。。

du显示的是文件所占用的磁盘的大小,因为在磁盘中一定是占据block的整数倍,所以即使是一个只含一个字符的文件也是4k大小。这里就显示出了ls -l和du的区别。

另外对于一个目录而言,du显示了整个目录包括其子目录的大小,而且一定是block的整数倍。而ls -l显示的却是这个目录本身的大小。

一般情况下du显示的会比ls -l显示的大,这主要是因为du显示的是block的整数倍,另外有子目录的话,du也会显示其中的大小,ls -l则会显示其实际占用的大小,并不一定是block的整数倍,另外对于目录只会显示目录本身的大小。


另外关于block的概念:

在文件系统中block一般是4k大小,这个block和磁盘的扇区是相对的,磁盘的扇区一般是512个字节,是磁盘存储的最小单位,但是block则是文件系统中的概念,每个文件最少也要占用一个block,是文件系统存储的最小单位。另外磁盘存储对于用户来说是透明的。

为什么要设置block的概念呢?

因为如果按照扇区的大小来取数据的话,效率比较低,毕竟cpu从磁盘读写数据的效率太低,所以现在有了block的概念,可以一次取一个块,而且寻址的开销也会变小,在分布式系统中,hdfs默认会设为64M。但是如果block设置的太小,又显现不出优势,太大则会浪费空间,所以设置为4k则是一个时间和空间的一个权衡。这只是我个人的理解。


如有不恰当之处,请指出。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值