免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: wkathy
打印 上一主题 下一主题

关于ls -l的问题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2007-03-13 00:08 |只看该作者
total 20 是ls所列出的入口占用空间字节数(以K为单位)
请注意:是"入口"占的空间字节数

[root@Linux_chenwy temp]# ls -l
总用量 36
-rw-r--r--    1 root     root        34890 10月 19 20:17 httpd.conf
-rw-r--r--    1 root     root            0 10月 19 20:16 temp

总用量 36:是ls所列出的入口占用空间的字节数(以K为单位)。
1该文件硬链接的数目。
root:文件属主。
root:文件属组(一般是文件属主所在的缺省组。)
34890:字节来表示的文件长度,记住,不是K字节!
10月 19 20:17:件的更新时间。
temp or httd.conf :件名。

BTW:要检查该目录所有文件占用的空间应该用这个命令:du。
譬如说前面说的36是如何计算出来:
首先我们要先了解你所用的文件系统的IO BLOCK(中文叫作簇)为多少,在你所使用的这个文件系统的IO BLOCK大小是4096 Bytes。

他意义是文件系统最小的读写及分配单位,每次读写操作你都不能小于这个尺寸。即使你的文件是只有一个字节。而且文件在硬盘上的存储也是以这个为单位,就是说如果文件尺寸小于这个值,那么它在磁盘上占用的空间就是4096字节。

占用空间的具体算法是:(进一(文件尺寸/4096))×4096。根据这个你就可以计算出你所列举的例子中的文件的空间使用状况:34890除以 4096,大约等于8.5,进一法取得为9,就是说文件在磁盘上占用了9个BLOCk,每个BLOCK为4K,所以这两个文件占用的空间就是36K。


原文的链接http://bbs.chinaunix.net/viewthread.php?tid=434579


之于第二个问题其实那就是 hard link的问题!~
可以试试   ln xxx xxx
其实就是所有hard link的个数而已!

第二个链接数是长格式第2列的数字,附件里每个文件都是2,是关于硬链接的。我想知道关于目录的链接数是不是等于.+..+子目录个数,包括隐藏目录吗?

目录链接数就是hard link个数,包括该目录下的所有文件和其它硬链接的个数,之于.和..也是一个硬链接,.硬链接到本目录,..硬链接到上一个目录

[ 本帖最后由 sin@ 于 2007-3-13 00:38 编辑 ]

论坛徽章:
0
22 [报告]
发表于 2007-03-13 09:37 |只看该作者
那对于这个来说:
  1. # ls -ls        
  2. total 12
  3.    8 -r--r--r--   1 root     bin         3700 Jun  8  2001 mpeg_rc.1
  4.    4 -r--r--r--   1 root     bin         1338 Jun  8  2001 mpeg_to_cell.1
复制代码


如果按照sin@ 兄的算法:
  1. 占用空间的具体算法是:(进一(文件尺寸/4096))×4096。根据这个你就可以计算出你所列举的例子中的文件的空间使用状况:34890除以 4096,大约等于8.5,进一法取得为9,就是说文件在磁盘上占用了9个BLOCk,每个BLOCK为4K,所以这两个文件占用的空间就是36K。
复制代码

3700/4096进一法取得为1,也就是占了1个block,每个为4k,那么所占空间就是1*4=4k;
1338/4096同理算得所占空间也是4k,那两个文件所占空间相加也只有8k啊,没有12k啊。

而按照ipv6ok兄的算法:
  1. total 754
  2.    8 -r-xr-xr-x   1 root     bin         3900 Jan 30  2002 mpeg1.i
  3. 3900/512=7.6171875--->8
  4. 124 -r-xr-xr-x   1 root     bin        63480 Jan 30  2002 mpeg1_dat.i
  5. 63480/512=123.984375--->124
  6. ... ...
复制代码

3700/512=7.2265625-->8; 1338/512=2.61328125-->3;
相加后也只有11啊。

我糊涂了,究竟是应该怎样计算啊?block的大小究竟是512bytes,还是4096bytes呢?
另外block的大小是不是只能以双数计算而没有单数呢?
请再指教!

论坛徽章:
0
23 [报告]
发表于 2007-03-13 10:57 |只看该作者
其实都对了.不一样的文件系统不一样的分区工具,都可能了.这个blocks的大小是可以自定义的了.windows 的是NTFS5.0 0.5k=512byte linux ext3=512byte;如果不知道,用fdisk -l就可以看到你的系统是多少了.sin@ 兄所引用的贴的文章我看过了,整体不错了.也有一些小错误.如t位,即是tick.这个属性相当有用的.叫粘贴位.有这个的文件夹,里面的文件夹,如a用户不能删除b用户的文件.但是没有这个tick,就可以.

[ 本帖最后由 ipv6ok 于 2007-3-13 11:06 编辑 ]

vyatta2.jpg (30.45 KB, 下载次数: 45)

vyatta2.jpg

论坛徽章:
0
24 [报告]
发表于 2007-03-13 11:47 |只看该作者
total 据我所知,是文件在磁盘的空间占用的大小

论坛徽章:
0
25 [报告]
发表于 2007-03-13 12:41 |只看该作者
原帖由 ipv6ok 于 2007-3-12 17:24 发表于 13楼  
目录的链接数是不是可以说是所有子目录的个数(包括隐藏的)?  
---->是的.
要理解的是。我们硬盘是这样找东东的文件分配表---->物理地址
文件分配表存放的是,这个文件的一些属性,如大小,名字,日 ...


目录链接数我明白了。

我也不知道我是不是真的明白你说的块问题了。

目录文件本身也占磁盘空间,我的电脑上所有目录文件所占空间是4096,目录文件内容是所辖文件和子目录的位置信息等。

而使用ls -l方式显示的total是指目录下所有文件和子目录的大小,那么自然也包括子目录文件本身的大小。

那我不明白的是:b目录(空目录)文件本身是4096大小,为什么会占4块,应该占8块啊?
                     a文件大小才48,为什么也占4块,应该占1块?

论坛徽章:
0
26 [报告]
发表于 2007-03-13 15:49 |只看该作者
原帖由 Jync 于 2007-3-13 09:37 发表于 21楼  
那对于这个来说:
# ls -ls        
total 12
   8 -r--r--r--   1 root     bin         3700 Jun  8  2001 mpeg_rc.1
   4 -r--r--r--   1 root     bin         1338 Jun  8  2001 mpeg_to_cell.1
.....

3700/4096进一法取得为1,也就是占了1个block,每个为4k,那么所占空间就是1*4=4k;
1338/4096同理算得所占空间也是4k,那两个文件所占空间相加也只有8k啊,没有12k啊。


那里那个4096其实是文件系统的IO block而已!具体要看你文件系统的IO block是多少!
可用 stat filename 列出有关文件的信息,其中就有IO block的值!


  1. # ls -ls
  2. total 6
  3.    2 drwxr-xr-x   2 root     bin          512 Sep 21 11:22 bin
  4.    2 drwxr-xr-x   6 root     bin          512 Sep 21 11:22 examples
  5.    2 drwxr-xr-x   4 root     bin          512 Sep 21 11:22 man
  6. # cd bin
  7. # ls -ls
  8. total 754
  9.    8 -r-xr-xr-x   1 root     bin         3900 Jan 30  2002 mpeg1.i
  10. 124 -r-xr-xr-x   1 root     bin        63480 Jan 30  2002 mpeg1_dat.i
  11. 560 -r-xr-xr-x   1 root     bin       271124 Jan 30  2002 mpeg_rc
  12.   28 -r-xr-xr-x   1 root     bin        14044 Jan 30  2002 mpeg_to_cell
  13.   28 -r-xr-xr-x   1 root     bin        13956 Jan 30  2002 rtvc-dump
  14.    6 -r-xr-xr-x   1 root     bin         2186 Jan 30  2002 rtvc-verify

  15. 这里bin下的blocks数大于bin目录的blocks数目,这个我不是很理解,不知道我有没有表达清楚,还望不吝赐教!多谢!

复制代码


至于那个total 其实是ls列出入口占空间的字节数!要理解好这个入口!比如一个目录或者一个文件,你ls看到它的名字那就是一个入口!这样明白了吗?

[ 本帖最后由 sin@ 于 2007-3-13 16:16 编辑 ]

论坛徽章:
0
27 [报告]
发表于 2007-03-13 16:02 |只看该作者
原帖由 sin@ 于 2007-3-13 15:49 发表于 25楼  
至于那个total 其实是ls列出入口占空间的字节数!要理解好这个入口!比如一个目录或者一个文件,你ls看到它的名字那就是一个入口!这样明白了吗?

多谢sin@兄,这个我明白了;

那能否再回答一下wkathy的这个问题呢?
那我不明白的是:b目录(空目录)文件本身是4096大小,为什么会占4块,应该占8块啊?
                     a文件大小才48,为什么也占4块,应该占1块?

论坛徽章:
0
28 [报告]
发表于 2007-03-13 17:37 |只看该作者
非常不好意思!还没做过实验就贴了上去!刚刚去做了一个实验,发现确实是有问题!

  1. [eric@localhost sr]# ls -ls
  2. total 44
  3. 40 -rw-r--r-- 1 root root 33678 Feb 10 10:40 httpd.conf
  4. 4 -rw-r--r-- 1 root root     0 Feb 10 10:40 temp
复制代码


  1. [eric@localhost sr]# touch a
  2. [eric@localhost sr]# ls -ls
  3. total 48
  4. 4 -rw-r--r-- 1 root root     0 Feb 10 10:51 a
  5. 40 -rw-r--r-- 1 root root 33678 Feb 10 10:40 httpd.conf
  6. 4 -rw-r--r-- 1 root root     0 Feb 10 10:40 temp
复制代码


  1. [eric@localhost sr]# echo "aaaaaaaaaaa" > a

  2. [eric@localhost sr]# ls -ls
  3. total 52
  4. 8 -rw-r--r-- 1 root root    12 Feb 10 10:54 a
  5. 40 -rw-r--r-- 1 root root 33678 Feb 10 10:40 httpd.conf
  6. 4 -rw-r--r-- 1 root root     0 Feb 10 10:40 temp

  7. [eric@localhost sr]# stat a
  8.   File: `a'
  9.   Size: 12              Blocks: 16         IO Block: 4096   regular file
  10. Device: fd00h/64768d    Inode: 1466373     Links: 1
  11. Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
  12. Access: 2007-02-10 10:51:01.000000000 +0800
  13. Modify: 2007-02-10 10:54:38.000000000 +0800
  14. Change: 2007-02-10 10:54:38.000000000 +0800

复制代码

从上可以看出ls列出入口占用空间的字节数(IO block)为4096,可用stat filename查看
然而ls -ls列出的第五列是文件的长度,例如用文件a做例子
12/4096=0.0029296875,为1 block,而1 block为4K,再加上入口占的空间的字节数为4096(4K),那刚好是8k!

个人觉得是这样!如有不正确的地方,还请高手指出!



  1. 那我不明白的是:b目录(空目录)文件本身是4096大小,为什么会占4块,应该占8块啊?
  2.                      a文件大小才48,为什么也占4块,应该占1块?
复制代码

目录和文件的IO block为4096! stat filename

[ 本帖最后由 sin@ 于 2007-3-13 17:40 编辑 ]

论坛徽章:
0
29 [报告]
发表于 2007-03-13 18:12 |只看该作者
一个block大小到底怎么查?
fdisk -l 对应512
stat    的IOblock是4096,Block是8什么意思?


感觉学无止境,活到老,学到老啊……………………………………

1.JPG (53.09 KB, 下载次数: 33)

1.JPG

2.JPG (41.1 KB, 下载次数: 29)

2.JPG

3.JPG (52.24 KB, 下载次数: 33)

3.JPG

论坛徽章:
0
30 [报告]
发表于 2007-03-13 18:13 |只看该作者
原帖由 sin@ 于 2007-3-13 17:37 发表于 27楼  
例如用文件a做例子
12/4096=0.0029296875,为1 block,而1 block为4K,再加上入口占的空间的字节数为4096(4K),那刚好是8k!

不是吧。。。。

看我的:
  1. # ls -ls
  2. total 27024
  3.     4 drwxrwxrwt  51 root   root     4096 Mar 13 18:06 .
  4.     4 drwxr-xr-x  24 root   root     4096 Mar 13 17:33 ..
  5.     4 drwxrwxrwt   2 root   root     4096 Feb  5 15:39 .ICE-unix
  6.     ... ...
  7.     4 drwx------   2 root   root     4096 Mar  9 17:59 YaST2-11324-6GH3Ja
  8.     4 -rwxr-xr-x   1 root   root      117 Mar 13 17:49 ajax
  9.     4 -rwxr-xr-x   1 root   root      117 Mar 13 17:49 child
复制代码

  1. stat child
  2.   File: `child'
  3.   Size: 117             Blocks: 8          IO Block: 4096   regular file
  4. Device: 309h/777d       Inode: 36          Links: 1
  5. Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
  6. Access: 2007-03-13 17:49:07.278571136 +0800
  7. Modify: 2007-03-13 17:49:07.278571136 +0800
  8. Change: 2007-03-13 17:49:07.278571136 +0800
复制代码


那么117/4096=0.028564453125为1block,1 block为4K,再加上入口占的空间的字节数为4096(4K),那岂不是8k?!而这里只是4k啊。
究竟怎么样才是正确的呢?郁闷+苦闷ing........
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP