Unix链接知识讲解

系统 其他OS
文章中,我们知道文件名是文件i节点的链接,也就是说一个i节点可以有多个Unix链接,即多个文件名,这种链接就是所谓的硬链接。

已经学习了很多Unix链接的知识,我们曾经在《文件系统研究之二》中提到了文件名是文件i节点的链接,也就是说一个i节点可以有多个Unix链接,即多个文件名,这种链接就是所谓的硬链接。除了硬链接之外,Unix下还有另一种Unix链接,称之为符号链接。

硬链接用ln命令创建,符号链接用ln -s创建。开始之前,先实践一把,在sco Unix试验如下命令:
 

  1. 538# echo "test" >abc  
  2. 539# l -i abc  
  3. 65542 -rw-r--r-- 1 root sys 5 Jul 5 04:54 abc  
  4. 540# ln abc abcnew  
  5. 541# ln -s abcnew abcs  
  6. 542# l -i abc*  
  7. 65542 -rw-r--r-- 2 root sys 5 Jul 5 04:54 abc  
  8. 65542 -rw-r--r-- 2 root sys 5 Jul 5 04:54 abcnew  
  9. 65542 -rw-r--r-- 2 root sys 5 Jul 5 04:54 abcs@ 

可以看到:
1、文件abcnew跟abc的大小,i节点完全一致;
2、文件abcs跟abcnew的大小,i节点也一致(注意:abcs的真实i节点并不是65542,后面可以看到,这是l程序的原因)
3、注意第三列的数字2,代表该i节点有2个Unix链接,不是3个。

试验二:
 

  1. 558# echo "test2">>abcnew  
  2. 559# cat abc  
  3. test  
  4. test2  
  5. 560# l -ia abc*  
  6. 65542 -rw-r--r-- 2 root sys 11 Jul 5 05:06 abc  
  7. 65542 -rw-r--r-- 2 root sys 11 Jul 5 05:06 abcnew  
  8. 65542 -rw-r--r-- 2 root sys 11 Jul 5 05:06 abcs@  
  9. 561# rm abc  
  10. 562# l -ia abc*  
  11. 65542 -rw-r--r-- 1 root sys 11 Jul 5 05:06 abcnew  
  12. 65542 -rw-r--r-- 1 root sys 11 Jul 5 05:06 abcs@ 

可以看到:
1、修改abcnew,abc同样大小变化,内容也同样变化;
2、删除abc,不会删除abcnew,但是Unix链接数变成1。

试验三:
 

  1. 563# rm abcnew  
  2. 564# l -ia abc*  
  3. 65543 lrwxrwxrwx 1 root sys 6 Jul 5 05:06 abcs@  
  4. 565# cat abcs  
  5. cat: cannot open abcs: No such file or directory (error 2)  
  6. 567# echo "test3" >abcnew  
  7. 568# cat abcs  
  8. test3  
  9. 569# l -ia abc*  
  10. 65542 -rw-r--r-- 1 root sys 6 Jul 5 05:39 abcnew  
  11. 65542 -rw-r--r-- 1 root sys 6 Jul 5 05:39 abcs@ 

可以看到:
1、删除abcnew,abcs还是不会被删除;
2、这里可以看出abcs的真实的i节点及大小。
3、重建abcnew之后,abcs指向了新的abcnew(i节点内容都变了)。

通过以上试验看出:硬链接典型的特征就是,所有文件的i节点号是一样的;硬链接不是文件拷贝,只是增加了一个i节点Unix链接(或者说增加了一个入口指针),所有的硬链接都是权力(权限,大小)均等的,修改任意一个,其他也被修改。

【编辑推荐】

  1. Unix系统问题讲解
  2. Unix操作系统榜首之名
  3. Unix系统中知识讲解
  4. Unix文件恢复方法演讲
  5. Unix文件知识讲解
责任编辑:小霞
相关推荐

2010-05-05 13:13:55

Unix内核

2010-05-04 09:22:10

Unix文件

2010-04-30 13:27:26

Unix cronta

2010-05-05 13:45:21

Unix Telnet

2010-04-30 13:38:51

Unix at命令

2010-05-04 16:33:39

Unix系统

2010-05-05 10:44:37

Unix 反引号

2010-05-05 15:02:39

Unix系统

2010-04-30 18:20:23

Unix系统

2010-04-21 14:29:52

Unix 线程

2010-05-04 09:45:28

Unix系统

2010-04-21 12:39:48

Unix 消息队列

2010-05-05 13:22:29

Unix Shell

2010-04-13 17:52:16

Unix交换区

2010-04-30 01:28:59

Unix系统

2010-04-29 13:30:20

Unix操作系统

2010-05-06 17:03:49

Unix命令

2010-05-06 14:24:56

Unix系统交换区

2010-04-21 13:47:45

Unix内核

2010-05-05 17:46:32

Unix文件系统
点赞
收藏

51CTO技术栈公众号