You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

为何ls与du命令显示同一文件的大小存在差异?

为何ls与du命令显示同一文件的大小存在差异?

嗨,这个问题其实是新手接触Linux文件系统时很常见的困惑,我来给你拆解清楚:

核心原因:两个命令的计算逻辑完全不同

  • ls -la 显示的是文件的「实际数据大小」
    这个命令统计的是文件里实际存储的字节数,也就是你写入文件的内容的真实大小。从你的输出里能看到,newquota文件的实际数据量是1024字节(也就是1KB),这就是ls给出的数值。

  • du -h 显示的是文件在磁盘上「占用的物理块大小」
    Linux的文件系统(比如你用的XFS)是按「块(block)」来分配磁盘空间的,每个块有固定的大小(常见的是4KB,你的系统应该就是这个配置)。哪怕你的文件内容只用到了块的一小部分,整个块也会被分配给这个文件,剩余的空间没法被其他文件利用。
    你的文件只有1KB,不够填满一个4KB的块,所以磁盘还是会给它分配一整个4KB的块,这就是du显示4.0K的原因。

那文件的「实际大小」到底是哪个?

这得看你关注的角度:

  • 如果是问文件里存储的内容有多少,那实际大小就是ls显示的1024字节(1KB);
  • 如果是问这个文件占用了多少磁盘空间,那就是du显示的4KB。

日常我们说“文件大小”,一般默认指的是前者,也就是文件的实际数据量。

备注:内容来源于stack exchange,提问作者Alakananda S

火山引擎 最新活动