甲骨文认证体系
Vmware认证体系
AWS亚马逊
阿里云认证体系
红帽认证体系
ZStack云计算认证体系
思科认证体系
华为认证体系
CDA数据分析师认证
达梦认证体系
麒麟
定制化课程
用linux实例叫你如何区分软硬链接
发布日期:2020-06-22 16:00:37阅读次数:

linux实例叫你如何区分软硬链接

什么是连接?链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件。

你可以简单地将链接理解为 Windows 中常见的快捷方式,Linux 中常用它来解决一些库版本的问题,通常也会将一些目录层次较深的文件链接到一个更易访问的目录中。

链接也分为软硬链接,软硬两种链接有什么区别?

从使用的角度讲,两者无区别,都与正常的文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行。

他们的区别在于底层的原理上。

为了解释清楚,我们首先在自己的一个工作目录下创建一个文件,然后对这个文件进行链接的创建:

$ touch myfile && echo "This is a plain text file." > myfile

$ cat myfile

This is a plain text file.

然后我们对它创建一个硬链接,并查看一下当前目录:

$ ln myfile hard

$ ls -li

25869085 -rw-r--r--  2 unixzii  staff  27  7  8 17:39 hard

25869085 -rw-r--r--  2 unixzii  staff  27  7  8 17:39 myfile

最左边一列即是文件的 inode 值,它指向了物理硬盘的一个区块,事实上文件系统会维护一个引用计数,只要有文件指向这个区块,它就不会从硬盘上消失。

inode 值相同,这两个文件就是一个文件一样,都指向同一个区块。

然后我们修改一下刚才创建的 hard 链接文件:

$ echo "New line" >> hard

$ cat myfile

This is a plain text file.

New line

下面我们看看软链接又称符号链接。

$ ln -s myfile soft

$ ls -li

25869085 -rw-r--r--  2 unixzii  staff  36  7  8 17:45 hard

25869085 -rw-r--r--  2 unixzii  staff  36  7  8 17:45 myfile

25869216 lrwxr-xr-x  1 unixzii  staff   6  7  8 17:47 soft -> myfile

在最左列,这个软链接的 inode 却是不一样啊,并且它的文件属性上也有一个 flag,这就说明它与之前我们创建的两个文件根本不是一个类型。

下面我们试着删除 myfile 文件,然后分别输出软硬链接的文件内容:

$ rm myfile

$ cat hard

This is a plain text file.

New line

$ cat soft

cat: soft: No such file or directory

之前的硬链接没有丝毫地影响,因为它 inode 所指向的区块由于有一个硬链接在指向它,所以这个区块仍然有效,并且可以访问到。而软链接的 inode 所指向的内容实际上是保存了一个绝对路径,当用户访问这个文件时,系统会自动将其替换成其所指的文件路径,然而这个文件已经被删除了,所以自然就会显示无法找到该文件了。

LINUX应用的应用越来越广泛,而相应人才的需求也会越来越旺盛,就业前景也非常广阔。腾科教育的提供Vmware虚拟机的课程。学习LINUX知识,为未来生活保障。