stat命令显示文件大小为何与du命令不同?以单字符文件为例
为什么
stat和du显示的文件大小存在差异? 核心原因:统计对象完全不同
stat的Size字段:统计的是文件实际包含的字节数。你用echo a > test创建文件时,echo会自动在字符a后追加一个换行符(\n),文件实际内容是a\n,合计2个字节,这就是stat显示Size:2的原因。du命令:统计的是文件占用的磁盘块大小。Linux主流文件系统(如ext4)默认磁盘块大小为4KB(4096字节),哪怕文件内容只有2字节,也需要占用至少一个完整磁盘块来存储,因此du -h会显示4.0K。
补充说明
若想让du显示文件实际字节大小,可使用命令du -b test,此时输出会和stat的Size字段一致(显示2字节)。如果文件内容超过单个磁盘块的容量,du会统计实际占用的磁盘块总数对应的总大小,而stat仍只会统计文件内容的字节数。
内容的提问来源于stack exchange,提问作者Lom Bard
相关产品推荐
相关产品推荐

