You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何du命令获取的文件大小小于ls命令的结果?

为什么du显示的文件大小比ls小?

先看你执行的命令输出:

$ du -h core.app.1665679445 
2.0M    core.app.1665679445

$ ls -lah core.app.1665679445 
-rw------- 1 262899 10000 31M Oct 13 16:44 core.app.1665679445

核心原因:这是一个稀疏文件(Sparse File)

你之前的理解有误——du的结果并非始终大于ls,两者的含义本质不同:

  • ls -lah显示的是文件的逻辑大小:即文件内容理论上的总字节数(这里的31M),不管这些字节是否真的占用了磁盘空间。
  • du -h显示的是文件实际占用的磁盘存储空间:也就是操作系统为这个文件分配的磁盘块总大小(这里的2.0M)。

core文件很容易成为稀疏文件:程序崩溃生成core dump时,只会写入进程实际使用过的内存页,那些未被使用的内存区域对应的文件部分,系统不会为其分配实际磁盘块,只是标记为空块。当你读取这些空块时,系统会自动返回全0,但这些块并没有真正占用磁盘空间,因此实际占用的磁盘大小(du结果)远小于逻辑大小(ls结果)。

验证方法

你可以用以下命令确认这是稀疏文件:

# 查看文件占用的磁盘块数(默认单位为4KB块)
ls -s core.app.1665679445

# 直接检查文件类型,稀疏文件会被标注
file core.app.1665679445

内容的提问来源于stack exchange,提问作者aviola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 17:46:16