zoukankan      html  css  js  c++  java
  • 【Linux命令】ls -l显示的内容中total到底是什么?

    当我们使用 ls -l 命令时,会看到如下信息:

    [root@model ESSSClient]# ls -l
    total 36
    -rw-r--r--    1  root  root   1670   Jan 11 10:11  CMakeLists.txt
    drwxr-xr-x    2  root  root   46     Jan 11 10:11  config
    -rw-r--r--    1  root  root   17078  Jan 11 10:11  ESSSCliOper.cpp
    -rw-r--r--    1  root  root   3708   Jan 11 10:11  ESSSCliOper.h
    -rw-r--r--    1  root  root   5421   Jan 11 10:11  ESSSCliTest.cpp

    很多人对于第一行的 total 36 的数值并不是很在意,但是你是否想过,它究竟是什么意思?

    man中说明: total 表示 "所列出内容的磁盘占用空间总和值,单位为kbytes"。这句话是什么意思?

    我们知道 ls -l 列出的第5列数值是该文件或目录的大小。这里目录的大小并非目录所包含的文件的总大小,仅仅是目录自身的大小

    如果无法理解这一概念,请思考一下 "linux中一切皆文件" 的含义。

    那么,图中的 total 36k 应该等于1670+46+17078+3708+5421 的值。我们计算一下,1670+46+17078+3708+5421 = 27923,单位是bytes,换算成 kbytes 则是 27923/1024 = 27.2685546875。 

    显然 36 ≠ 27.2685546875。

    但为什么total却是所列出内容的磁盘占用空间总和值? 请注意其中的“占用”二字,何为占用?

    我们知道文件系统中是有block(块)的概念的,块就像一间间屋子,如果你的文件系统中存的都是一些较大的文件,那么使用较大的block会得到较好的性能,反之亦然。所以,数据在存放过程中占据的block的大小就是 “占用”的空间。

    那么27.2685546875k占用多少个block呢?

    首先查看系统中block的大小,我们用以下两种方法查看:

    [root@model home]# tune2fs -l /dev/sdb5 | grep "Block size"
    Block size:               4096
    [root@model home]# getconf PAGESIZE
    4096

    可以看出,系统中一个块(block)的大小是4k(4096bytes),并且一个块(block)只可以容纳一个文件。所以,上面每个不足4K的文件(目录不占用块内存)都要占用一个块(block),即2个块(block);另外,ESSSCliOper.cpp文件为 17078bytes/1024 =  16.677734375K,占5个块(block),虽然第5个block中只存了0.677734375K的数据,但是它依然要占用一个block空间;ESSSCliTest.cpp文件 5421bytes/1024 = 5.2939453125 K,占2个块(block)。因此,上面的文件共占用了9个块,即 9*4096 bytes = 36K。.

    最后我们还有一个很方便的查看和计算total的办法。就是使用 ls 命令的 -s 选项:

    -s   以块大小为单位列出所有文件的大小

  • 相关阅读:
    .NET定时任务执行管理器开源组件–FluentScheduler
    ASP.NET MVC 使用 FluentScheduler 定时器计划任务
    Windows 2008 IIS7.5中创建独立账号的FTP站点图文教程
    除非Microsoft FTP 服务(FTPSVC)正在运行,否则无法启动FTP站点。服务目前已停止
    Web API--自定义异常结果的处理
    C#怎么遍历一个对象里面的全部属性?
    WebApi 接口参数不再困惑:传参详解
    C#进阶系列——WebApi 接口测试工具:WebApiTestClient
    WebApi安全性 使用TOKEN+签名验证
    ASP.NET(C#) Web Api通过文件流下载文件到本地实例
  • 原文地址:https://www.cnblogs.com/SchrodingerDoggy/p/14274197.html
Copyright © 2011-2022 走看看