Ubuntu中“ls -l“命令显示的内容中total到底是什么?

"ls -l"命令显示的内容中total到底是什么?

当以“-l”作为参数执行ls时命令时,第行总会显示“总用量”的数值。(在英文版的Linux系统上,第一行显示的是“total”的数值。)

"ls -l"命令显示的内容中total到底是什么?

网查,有人告诉我:ls 的total合计数,是列出目录下文件的block合计数。ls再加个参数“-s”就可以知道每个文件所占用的block数,加起来就是total指出的数值了。于是我执行“ls -l -s”,下面是其结果。

"ls -l"命令显示的内容中total到底是什么?

每个列出的文件所占用的block数,加起来的确是52个。想想,觉得目录文件“.”和“..”没显示,于是再试:“ls -la -s”。

"ls -l"命令显示的内容中total到底是什么?

相比上一次命令,这次多显示了两个目录文件“.”和“..”,各文件block块计数,加起来正好是60。

两次对比,说明“ls 的total合计数, 是列出目录下文件的block合计数”是错误的,应该是“ls 的total合计数,是所有已经列出的文件block总数,并且,不列出的不计算。

看到这里的你,可能忍不住懒得看下去了。但凡学用Linux的人,哪个不是有两把刷子!这点小知识还用你记笔记!当然,此篇不是什么高深知识,但下面还可能有你意想不到的地方。

Linux系统的Block size是何物?

1)磁盘读取数据是按Block为单位读取的。

2)一个文件可能占用多个block。每读取一个block就会消耗一次磁盘I/O。

3)一个block只能存放一个文件的内容,无论内容有多少。如果block是4K,那存放1K的文件,剩余3K就浪费了。

4)block要有个合适的大小。太大例如16K,文件实际内容只有0.1K,浪费了15.9K。如果系统上有大量小文件,磁盘空间浪费巨大。如果block设为1K,读写一个稍大的文件,磁盘读写次数很频繁,消耗磁盘IO。

Linux系统如何查看Block size

une2fs -l /dev/sda1 |grep 'Block size'

由上面命令可知,我的Linux系统的Block size是:4096 ,也就是4K。

一个疑问

查询命令帮助:ls --help,在我的ubuntu20,中文shell上显示:“-s, --size 以块数形式显示每个文件分配的尺寸”,说明"ls -la"再加上参数“-s”,第一列显示的确实是block数值。

因为文件是按照block来存放的。我的两个C代码read_from_stdin.c、write_to_stdout.c,一个文本文件out.txt,其内容很少,都不超2K,Block取整,占用的空间应该不超过2个Block才是。

然而我却发现:长度为1216字节的read_from_stdin.c,block数是4,实长51字节的out.txt也是4。如果单位是block,说明它们都占4*4096=16K字节的空间。这显然不对。“ls -la -s”显示的第一列是block数量吗,total真的是block合计数吗?

我的观点

Ubuntu20的命令"ls --help"的帮助中对“-s”参数解释有误,total的意思应该是:“所列出内容的磁盘占用空间和total总和值单位为Kbytes,每个文件的单位也是Kbytes"。我多次实际查证,这个解释才是正确的。

这个问题虽小,可也困扰了我好几天。那是我太迷信命令本身的帮助了。有可能在ubuntu在发行过程中,这个错误没有纠正。

你的看法呢?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虎哥的世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值