免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 14279 | 回复: 11
打印 上一主题 下一主题

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

论坛徽章:
0
1 [报告]
发表于 2007-03-12 15:02 |显示全部楼层
原帖由 wkathy 于 2007-3-12 13:50 发表于 3楼  


不是啊,和不是20啊?

1.怎么不是呢?!
你先ls -ls一下,比如:
  1. # ls -ls
  2. total 4
  3.    2 drwxr-xr-x   3 root     bin          512 Sep 21 11:14 SUNWits
  4.    2 drwxr-xr-x   5 root     sys          512 Sep 21 11:22 SUNWrtvc
复制代码

看见第一列显示的两个2没有?加起来,就是total后面的4;
用man看一下ls,对于-s的说明是这样的:
  1. -s    Gives size in blocks, including indirect  blocks,  for each entry.
复制代码

也就是表示所占的block(块)的数目。

2.对于第二个问题,以楼主给出的为例:
  1. lrwxrwxrwx  2 root     root    9  Mar  12  09:11 g -> ../wctest
复制代码

这是一个符号连接,连接数9就表示“->”后面../wctest的字符数,共有9个字符。不知道楼主想问的是不是这个。

说得不对的地方还望大家指正!

[ 本帖最后由 Jync 于 2007-3-12 15:04 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-03-12 15:29 |显示全部楼层
原帖由 wkathy 于 2007-3-12 15:19 发表于 5楼  
谢谢jync,第一个是你说的那样,是我算错了。那一个文件所占块数到底怎么算呢?a文件大小48byte,b目录是4096byte,为什么所占块数都是4个呢?为什么链接文件c和g不占块数呢,它们不也是保存在磁盘上的吗?

...

回wkathy兄,对于第一个所占块数为什么是4,和c,g不占块数的问题,请恕我水平有限,无法向你解释,因为我也是菜鸟,呵呵,等等其他高手来给个答案吧
链接数第二列的数字就是该目录下子目录的总和了,包括隐藏目录(文件)!

[ 本帖最后由 Jync 于 2007-3-12 16:29 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-03-12 16:47 |显示全部楼层
原帖由 ipv6ok 于 2007-3-12 16:04 发表于 8楼  
如:有二个2byte的文件存进来,用的是二个block!!当有第三个510byte来的时候,用的是三个block!!


感谢ipv6ok兄的解释,但能否详细解释一下“存进来”指的是什么?
我的意思是比如一个bin目录占了两个blocks,那么在bin下新建几个,或者coy过来几个文件,这几个文件所占的blocks是重新分配的。还是就存放在bin的blocks里,那么如果这些文件的大小大于2个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
复制代码

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

论坛徽章:
0
4 [报告]
发表于 2007-03-12 18:09 |显示全部楼层
原帖由 wkathy 于 2007-3-12 16:58 发表于 11楼  


wkathy……mm:)

呵呵,不好意思,搞错了,难得见到几个mm,幸会啊,以后互相帮助:)

论坛徽章:
0
5 [报告]
发表于 2007-03-12 18:10 |显示全部楼层
原帖由 ipv6ok 于 2007-3-12 17:30 发表于 14楼  


存进来,指的意思是,一个文件被新建后,要存储到硬盘中。
注意理解的是文件夹的那个blocks不是指的是文件夹里面文件总存储大小!而是这个文件夹下面有几个文件,文件夹的一些属性。。。
文件的才是真真的 ...

多谢ipv6ok兄的讲解,受益匪浅!

论坛徽章:
0
6 [报告]
发表于 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
7 [报告]
发表于 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
8 [报告]
发表于 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........

论坛徽章:
0
9 [报告]
发表于 2007-03-14 08:53 |显示全部楼层
原帖由 wkathy 于 2007-3-13 18:33 发表于 33楼  
我想再问,你们是如何把命令用文本方式贴上来的,是在linux下上网吗?
我用的是虚拟机,所以用图片方式上传的。

^_^

呵呵,我的是公司的测试服务器,用SecuerCRT连的,可以ctrl+c,ctrl+v。

论坛徽章:
0
10 [报告]
发表于 2007-03-14 09:00 |显示全部楼层
原帖由 sin@ 于 2007-3-13 18:50 发表于 34楼  
现在真的头都大了!~怎么我的结果跟你们的又不同的呢?是什么原因呢?
楼上的兄弟可不可以 touch 一个空文件,然后ls -ls  ,贴一个上来!


看我的^_^
  1. # tune2fs -l /dev/hdd2
  2. tune2fs 1.26 (3-Feb-2002)
  3. Filesystem volume name:   /DB_Data
  4. Last mounted on:          <not available>
  5. Filesystem UUID:          2edaf666-aafd-11db-8b13-b9cf0e3a4f2b
  6. Filesystem magic number:  0xEF53
  7. Filesystem revision #:    1 (dynamic)
  8. Filesystem features:      has_journal filetype needs_recovery sparse_super
  9. Filesystem state:         clean
  10. Errors behavior:          Continue
  11. Filesystem OS type:       Linux
  12. Inode count:              3808512
  13. Block count:              7602176
  14. Reserved block count:     380110
  15. Free blocks:              7474456
  16. Free inodes:              3808501
  17. First block:              0
  18. Block size:               4096
  19. Fragment size:            4096
  20. Blocks per group:         32768
  21. Fragments per group:      32768
  22. Inodes per group:         16416
  23. Inode blocks per group:   513
  24. Last mount time:          Wed Feb 28 16:20:49 2007
  25. Last write time:          Wed Feb 28 16:20:49 2007
  26. Mount count:              9
  27. Maximum mount count:      -1
  28. Last checked:             Wed Jan 24 00:17:12 2007
  29. Check interval:           0 (<none>)
  30. Reserved blocks uid:      0 (user root)
  31. Reserved blocks gid:      0 (group root)
  32. First inode:              11
  33. Inode size:               128
  34. Journal UUID:             <none>
  35. Journal inode:            8
  36. Journal device:           0x0000
  37. First orphan inode:       0
复制代码


然后:
  1. # touch test
  2. #ls -ls
  3. total 14340
  4.    8 -rw-r--r--    1 root     root         5824 Jun 25  2001 boot.b
  5.    4 -rw-r--r--    1 root     root          612 Jun 25  2001 chain.b
  6.    ... ...
  7.    0 -rw-r--r--    1 root     root            0 Mar 14 08:54 test
  8.    ... ...
  9. 2740 -rwxr-xr-x    1 root     root      2797975 Dec 11  2003 vmlinux-2.4.9-e.34
复制代码

[ 本帖最后由 Jync 于 2007-3-14 09:02 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP