[juliantec_list] Re:Re: 文件链接数的意义

  • From: longjun198806 <longjun198806@xxxxxxx>
  • To: "Gurgle Chen" <gurgle@xxxxxxxxxxxxxx>
  • Date: Tue, 19 Oct 2010 21:53:29 +0800 (CST)

谢谢您这么详细的回答
在 2010-10-14 10:37:49,"Gurgle Chen" <gurgle@xxxxxxxxxxxxxx> 写道:
>
>> 本人刚学linux  C编程,刚加入该邮件列表,希望以后能向各位学习
>
>不好意思,这段时间忙于其他事情,疏于回复邮件列表了。
>欢迎您加入我们的邮件列表进行讨论。
>
>
>> 文件长格式的第二项链接数的意义?可不可以理解为这个文件里的程序“调用”了其他的文件或目录呢?
>
>一般不是这样理解的。
>首先说一下,在 ls -l 输出结果列表中的第二项表示文件的link count,即连接计数。 
>
>
>
>
>你如果熟悉文件系统在Linux中的实现就会知道,其实Linux每一个文件在文件系统内部管理的时候,都会
>给其分配一个唯一的数据结构,称为 inode。在inode中记录了这个文件的内容保存在磁盘的哪里哪里之类。
>
>inode 是文件系统内部使用的,而作为用户的我们如果要读写一个文件,那必须提供出来文件的名字。
>在用 read 系统调用去读一个名为 "./tmp" 的文件的时候,它内部会将这个名字转换成对 inode 的引用,
>继而读出文件的内容。
>
>在一个文件系统范围内,我们可以给一个inode指派多个名字,比方"./tmp"和"./tmp.hard"等,这样的话,
>在文件系统内部这两个名字都指向了同一个inode,实际上也就指向了同一个文件。所以,显然,你可以用
>"./tmp" 去write一些内容。写完后,你可以去 read "./tmp.hard",从而能读出你之前写进去的内容。
>
>所以,上面说的连接计数,其实指的是指向同一个 inode 的名字的数目,也就是一个inode的硬连接的数目。
>文件系统内,给每一个inode 都分配一个编号,你可以用 ls -il 查看它。
>
>说了这么多,我们做些测试就能明白:
>
>[yihect@juliantec ~]$ echo 1234 > ./tmp
>[yihect@juliantec ~]$ ls -il ./tmp
>594476 -rw-rw-r--  1 yihect yihect 5 Oct 14 09:45 ./tmp
>[yihect@juliantec ~]$ ln ./tmp ./tmp.hard
>[yihect@juliantec ~]$ ls -il ./tmp ./tmp.hard
>594476 -rw-rw-r--  2 yihect yihect 5 Oct 14 09:45 ./tmp
>594476 -rw-rw-r--  2 yihect yihect 5 Oct 14 09:45 ./tmp.hard
>[yihect@juliantec ~]$
>[yihect@juliantec ~]$
>[yihect@juliantec ~]$ cat ./tmp
>1234
>[yihect@juliantec ~]$
>[yihect@juliantec ~]$
>[yihect@juliantec ~]$ echo abcd >> ./tmp
>[yihect@juliantec ~]$
>[yihect@juliantec ~]$
>[yihect@juliantec ~]$ cat ./tmp.hard
>1234
>abcd
>
>简述下上面的测试过程:以 "./tmp" 问名称新建一个文件,这个文件对应的 inode 编号为 594476。
>接下来使用 ln 建立一个硬连接 ./tmp.hard. 注意用 ls -il 查看这两个名字都指向同一个 inode,
>并且连接计数从原来的1变成了2。最后我就是做了些读写的测试,表明操作的是同一个文件。
>
>另外,说一下,当一个 inode 的计数降低到了0的时候,文件系统内部就会释放这个inode所占用的内存,
>并在磁盘中回收原先用于储存这个文件内容的扇区。那我们如何测试以降低连接计数,可以使用 rm 删除文件。
>
>[yihect@juliantec ~]$ ln ./tmp ./tmp.hard2
>[yihect@juliantec ~]$ ls -il ./tmp ./tmp.hard ./tmp.hard2
>594476 -rw-rw-r--  3 yihect yihect 10 Oct 14 09:46 ./tmp
>594476 -rw-rw-r--  3 yihect yihect 10 Oct 14 09:46 ./tmp.hard
>594476 -rw-rw-r--  3 yihect yihect 10 Oct 14 09:46 ./tmp.hard2
>[yihect@juliantec ~]$ rm ./tmp
>[yihect@juliantec ~]$ ls -il ./tmp.hard ./tmp.hard2
>594476 -rw-rw-r--  2 yihect yihect 10 Oct 14 09:46 ./tmp.hard
>594476 -rw-rw-r--  2 yihect yihect 10 Oct 14 09:46 ./tmp.hard2
>
>与硬连接对应的是软件连接,你可以查查看什么是软连接。 
>


濡傝閫€鍑鸿繖涓垪琛紝璇峰彂閭欢缁欑鐞嗗憳銆?


Other related posts: