关于 du 和 ls 的简单探讨

      du 命令,用于评估文件系统的磁盘使用量(常用于评估目录所占容量)。PS:df 是评估文件系统的整体使用量。

      直接输入 du  指令而不加参数时,du 会分析目前所在目录的文件与目录所占用的硬盘空间,但是,实际显示时,进会显示目录容量(不含文件)。因此,很多文件并没有被显示出来。并且在 du 指令输出结果的最后一栏显示当前目录下所有文件的总量(包括当前目录本身以及当前目录下的子目录里的文件大小),单位是 K 。

    举个例子:

    我有个当前目录 test1,在此目录下有些文件 file1,file2,file3,file4,file5,也有两个目录 test2,redtest,其中 test2 目录为空,redtest 目录下还有个目录 a4 以及一些文件。

那么,当我在当前目录 test1 下使用不带参数的 du 指令时,输出结果如下:

   

<span style="font-size:14px;">$  du
4              ./test2
4              ./redtest/a4
24             ./redtest
92             .</span>

    其中,最后一行的 . 表示当前目录,大小为 92K。

    然后我用 ls -l 指令在当前目录 test1 下运行,发现显示的总用量为 68K。那剩余的 24K 咋来的呢?因为 du 的结果包含当前目录的子目录的大小,所以,这多余的大小肯定是在子目录里。而子目录 test2 为空,不管它。我们来看子目录 redtest。

    用 ls -l 指令查看时,发现总量为 20K,也就是多出了 4K。因为 redtest 目录下还有个子目录 a4,所以猜想是 a4 里的文件占用了 4K。可以当我 ls -l a4

时,发现,总用量为 0,所以这 4K 一定实在别处。

    我们知道,当用 ls 来查询文件大小时,并不会显示当前目录的大小,而是显示当前目录下所有文件的大小及总量。而 du 指令的最后一行有个 .(点符号)

这代表的是当前目录。所以,这多出来的 4K 就是当前目录 test1 本身的大小。而一般,目录本身的大小就是 4K。问题解决了。


   细心的读者可能发现了,当用 ls -l 来查看文件大小时,各个文件大小相加,并不等于此命令显示出来的总用量。接下来,我们来探讨这个问题。

    我们知道,ls -l 显示的第三个字段是文件的大小。单位为 Byte。以我目录 redtest 为例,里面有文件 a1,a1.orted, a1.sorted, a2, a3, a4, conj。其中除了 a4 为目录外,

其余均是普通文件。下面是一个 ls -l redtest 的简单输出:

   

$  ls -l redtest
总用量   20

35       a1
35       a1.orted
35       a1.sorted
0         a2
0         a3
4096  a4
118    conj

   第一栏为文件大小,单位为 Byte,第二栏为文件名。可以看出几个文件加起来怎么也不可能得到 20K,甚至远远小于 20K。这里的原因其实跟文件系统本身有关。

在ext文件系统中,每一个文件的 Block 为 4K。例如,一个文件的大小为 13K,那么它占用 13K / 4K = 3.25 个Block,由于 Block 只能被一个文件占用,则实际上此文件占用了 4 个Block。它的大小就是 4 * 4K = 16K。而不是 13K。而 ls -l 的总用量就是按 Block  来显示用量的。回到上面哪个例子:

    restest 目录下,两个文件为空,四个文件大小都不足 4K,即一个 Block,那么它们就会分别占用一个 Block。而还有一个目录 a4 的大小刚好为 4K,则它占用一个 Block。总

共加起来就是 5 个Block,即 5 * 4K = 20 K。所以 ls -l 显示的总用量当然为 20 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值