本节讨论初级管理(LPIC-1)101 考试的主题 1.104.7 的内容。这个主题的权值是 1。
在本节中,学习以下内容:
硬链接
在主题 103 的教程 “LPI 101 考试准备(主题 103):GNU 和 UNIX 命令” 中学过,文件或目录包含在块 的集合中,关于文件或目录的信息包含在 inode 中。
硬链接 是指向 inode 的指针。所以,文件名实际上是指向包含文件信息的 inode 的链接。可以使用 ls 命令的 -i 选项显示文件和目录项的 inode 号。
可以使用 ln 命令为现有文件创建其他硬链接(但是对于目录不能这么做,尽管系统会将 . 和 .. 设置为硬链接)。如果一个 inode 有多个硬链接,那么只有当链接计数减少到零时 inode 才会被删除。
清单 58 显示如何创建文件,然后创建它的硬链接。它还说明即使删除了原来的文件名,第二个硬链接会使 inode 不被清除。
zuSLinux联盟
清单 58. 硬链接
<!--[if !supportEmptyParas]--> <!--[endif]-->
ian@pinguino:~$ echo testing > file1
ian@pinguino:~$ ls -l file*
-rw-r--r-- 1 ian ian 8 2005-12-26 15:35 file1
ian@pinguino:~$ ln file1 file2
ian@pinguino:~$ ls -l file*
-rw-r--r-- 2 ian ian 8 2005-12-26 15:35 file1
-rw-r--r-- 2 ian ian 8 2005-12-26 15:35 file2
ian@pinguino:~$ rm file1
ian@pinguino:~$ ls -l file*
-rw-r--r-- 1 ian ian 8 2005-12-26 15:35 file2
ian@pinguino:~$ cat file2
testing
|
<!--[if !supportEmptyParas]--> <!--[endif]-->
硬链接只能在一个特定的文件系统中存在。硬链接不能跨越文件系统,因为它们要引用 inode 号,而 inode 号只在一个文件系统中是惟一的。
查找硬链接
如果需要查明哪些文件链接到某个 inode,那么可以使用 find 命令和 -samefile 选项加一个文件名,或者 -inum 选项加一个 inode 号,如清单 59 所示。
zuSLinux联盟
清单 59. 查找硬链接
<!--[if !supportEmptyParas]--> <!--[endif]-->
ian@pinguino:~$ ln file2 file3
ian@pinguino:~$ ls -il file2
172 -rw-r--r-- 2 ian ian 8 2005-12-26 15:35 file2
ian@pinguino:~$ find . -samefile file2
./file2
./file3
ian@pinguino:~$ find . -inum 172
./file2
./file3
|
符号链接
Linux 系统中使用的文件系统链接的另一种形式是符号链接(常常简称为 symlink)。在这种形式中,链接引用另一个文件系统对象的名称,而不是它的 inode。符号链接可以引用目录,也可以引用另一个文件系统上的文件。它们常常用于为系统命令提供别名。在长目录清单中,如果一个对象的第一个字符是小写的 l,那么它就是符号链接。如清单 60 所示。
zuSLinux联盟
清单 60. 符号链接示例
<!--[if !supportEmptyParas]--> <!--[endif]-->
ian@pinguino:~$ ls -l /sbin/mkfs.*
-rwxr-xr-x 1 root root 14160 2005-09-20 12:43 /sbin/mkfs.cramfs
-rwxr-xr-x 3 root root 31224 2005-08-23 09:25 /sbin/mkfs.ext2
-rwxr-xr-x 3 root root 31224 2005-08-23 09:25 /sbin/mkfs.ext3
-rwxr-xr-x 2 root root 55264 2005-06-24 07:48 /sbin/mkfs.jfs
-rwxr-xr-x 1 root root 13864 2005-09-20 12:43 /sbin/mkfs.minix
lrwxrwxrwx 1 root root 7 2005-12-14 07:40 /sbin/mkfs.msdos -> mkdosfs
-rwxr-xr-x 2 root root 241804 2005-05-11 09:40 /sbin/mkfs.reiser4
-rwxr-xr-x 2 root root 151020 2004-11-25 21:09 /sbin/mkfs.reiserfs
lrwxrwxrwx 1 root root 7 2005-12-14 07:40 /sbin/mkfs.vfat -> mkdosfs
-rwxr-xr-x 1 root root 303788 2005-04-14 01:27 /sbin/mkfs.xfs
|
<!--[if !supportEmptyParas]--> <!--[endif]-->
除了 l 类型之外,可以在右边看到 ->,后面是这个链接引用的名称。例如,mkfs.vfat 命令是 mkdosfs 命令的符号链接。在 /sbin 和其他系统目录中会看到许多这样的链接。符号链接的另一个迹象是,它的大小等于链接目标名的字符数。
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论