Solaris软链接和硬链接及ls常用参数解释

在学习Solaris的目录继承结构的时候,很多东西大家都知道了,每个目录什么功能,就不细说了。通过阅读,发现了一个以前没有注意到的问题:软链接和硬链接的问题。

链接即link,在Unix和Linux系统中用ln命令,软链接需要加参数 -s。

在 说软硬链接之前需要提到的是文件的存储方式,在Solaris中,文件的存储方式是由Inode和Data Blocks组成(包括目录,在Unix系统中,一切皆文件)。Inode是一个标号,每一个Inode标号对应一个Data Blocks。每一个文件其实就是与Inode标号相关联,从而获得数据的内容。下面就简单表示了一下file1的关联模式。file1对应的Inode 为3561,其内容就为相对应的Data Blocks中存储的内容。
file1
——————
|Inode 3561 |
——————
| |
|Data Blocks |
| |
——————

软链接其实就像一个指针,例如本地的文件名为Link1,对应的Inode是1228,其Data Blocks中存储的内容就是一个指向另一个文件的指针。例如指向另一个文件为file1,Inode是3561。

软链接命令为:ln -s pathname target。
例如实现上例命令为:ln -s link1 file1

硬链接与 软链接有比较大的不同。硬链接是指两个文件都指向同一个Inode。所以如果软链接把link删掉的话,原文件file是不会受到影响的,但是如果原文件 file删掉了,链接link就会失效,因为找不到target了。而硬链接由于两个文件都能找到Inode,所以删掉其中的一个对于另一个没有任何影 响。

Inode是整个文件系统中很关键的部分,它就像一个指针一样。换句话说,Inode就是一个入口。
我们在用ls命令查看目录结构的时候,如果使用-l参数就会看到很多详细信息,例如:
#ls -l
total 2
drwxr-xr-x 77 root sys 4096 Sep 23 08:36 dir
-rwxr-xr-x 1 user user 10000 Sep 23 19:11 file

前面是权限,应该都清楚,不细说。权限后面跟着的数字就是表示这个文件和目录有多少个硬链接。换句话说就是有多少个文件指向这个Inode。
我们加上参数-i可以看到Inode:
#ls -il dir
21449 drwxr-xr-x 77 root sys 4096 Sep 23 08:36 dir

在权限前面的数字就是Inode了。

由此可知,一个文件最少有一个硬链接,而一个目录则至少有2个硬链接,一个是目录本身的入口,另一个是目录内部的 ".",是在目录内表示本目录的入口。所以在目录内每多一个目录,就会多一个硬链接,因为子目录的".." 表示的父目录的入口。大家可以尝试一下。

下面列出ls命令常用的参数及功能:
ls
-l 显示详细参数
-a 显示全部文件,包括隐含文件
-L 显示软链接的目标目录信息
-i 显示Inode
-R 显示包括继承的子目录的信息
-d 后面根目录名,只显示目录名称和信息,不显示目录内的信息。

你可能感兴趣的:(Solaris)