陈奇网络工作室

基于SAIL-IMX6理解Linux链接

系统操作和维护

链接是把文件和目录放在你想要的地方的另一种方法。

除了我们在本系列的前一部分详细讨论的cp和mv之外,链接是将文件和目录放在您希望的位置的另一种方式。它的优点是你可以同时在多个位置显示一个文件或目录。

如前所述,在物理磁盘级别,文件和目录之类的东西实际上并不存在。文件系统是为了方便人们使用而虚构的。但是在磁盘层面,有一个叫分区表的东西,它位于每个分区的开头,然后数据分散在磁盘的其余部分。

尽管有不同类型的分区表,但分区开始处的表包含将映射每个目录和文件的开始和结束位置的数据。分区表就像一个索引:当一个文件从磁盘加载时,操作系统会在表中查找条目,分区表会告诉文件在磁盘上的起始位置和结束位置。然后磁头移动到起点,读取数据,直到到达终点。你看:这是你的文件。

(1)硬链接:

硬链接只是分区表中的一个条目,指向磁盘上的一个区域,表示这个区域已经分配给了一个文件。换句话说,硬链接指向已经被另一个条目索引的数据。让我们看看它是如何工作的。

打开终端,创建一个实验目录并输入:

mkdir测试_目录

光盘测试_目录

使用触摸创建文件:

触摸test.txt

为了获得更多的经验(?),在文本编辑器中打开test.txt,添加一些单词。

现在,通过执行以下命令建立一个硬链接:

ln test.txt硬链接_test.txt

运行ls,您将看到您的目录现在包含两个文件,或者看起来是这样。正如您之前所读到的,您真正看到的是完全相同的文件的两个名称:hardlink_test.txt包含相同的内容,不会再填充磁盘上的任何空间(您可以尝试使用大文件进行测试),并使用与test.txt相同的inode:

$ ls -li试验

16515846-rw-rr2 Paul Paul 14 oct 1209:50 hard link _ test . txt

16515846-rw-rr2 Paul Paul 14 oct 1209:50 test . txt

ls的-i选项显示文件的“信息节点值”。“inode”是分区表中的一个信息块,它包含文件或目录在磁盘上的位置、最后修改时间和其他数据。如果两个文件使用同一个inode,那么不管它们在目录树中的位置如何,它们实际上都是同一个文件。

(2)软链接:

软链接也称符号链接symlink,与硬链接不同:软链接实际上是一个独立的文件,有自己的inode,在磁盘上有自己的小地方。但它只包含一小部分数据,将操作系统指向另一个文件或目录。

您可以使用ln的-s选项来创建软链接:

ln -s test.txt softlink_test.txt

这将在当前目录下创建一个软链接softlink_test.txt,指向test.txt。

再次执行ls -li,您可以看到两个链接的区别:

$ ls -li

共计8个

16515846-rw-rr2 Paul Paul 14 oct 1209:50 hard link _ test . txt

16515855 lrwxrwxrwx 1保罗保罗8 10月209:50 softlink _ test . txt-test . txt

16515846-rw-rr2 Paul Paul 14 oct 1209:50 test . txt

Hardlink_test.txt和test.txt包含一些文本,字面上占据相同的空间。它们使用相同的inode值。同时,softlink_test.txt占用的空间要少得多,并且具有不同的inode值,将其标记为完全不同的文件。使用ls的-l选项还会显示软链接指向的文件或目录。

(3)为什么要使用链接?

它们适用于具有自己环境的应用程序。您的Linux发行版通常没有您需要的应用程序的最新版本。以优秀的Blender 3D设计软件为例。Blender允许您创建3D静态图像和动画电影,每个人都想在自己的机器上拥有它。问题是Blender的当前版本至少比任何发行版附带的版本高一个版本。

幸运的是,Blender提供了开箱即用的下载。除了程序本身,这些软件包还包含Blender需要运行的复杂库和依赖框架。所有这些数据和块都在它们自己的目录层次结构中。

每次你想运行Blender的时候,你都可以把它光盘到你下载它的文件夹,然后运行它:

/搅拌机

但是不方便。如果可以从文件系统的任何地方运行blender命令,比如桌面命令启动器,那就更好了。

方法是将blender可执行文件链接到bin/目录。在许多系统上,您可以通过将blender命令链接到文件系统中的任何位置来使其可用,就像这样。

ln-s/path/to/blender _ directory/blender/home//bin

另一种需要链接的情况是软件需要过时的库。如果你用ls -l列出你的/usr/lib目录,你会看到很多软链接文件一闪而过。如果你仔细观察,你会发现软链接通常和它们链接的原始文件有相似的名字。你可能会看到libblah链接到libblah.so.2,你甚至会注意到libblah.so.2相应地链接到原始文件libblah.so.2.1.0。

这是因为应用程序通常需要安装比已安装版本旧的库。问题是,即使新版本仍然兼容旧版本(通常情况下),如果程序找不到它要找的版本,程序就会出现问题。为了解决这个问题,发行版通常会创建链接,以便关键应用程序认为它找到了旧版本,但实际上它只找到了一个链接,并最终使用了更新的库版本。

其中一些与你自己用源代码编译的程序有关。您自己编译的程序通常安装在/usr/local中,程序本身安装在/usr/local/bin中。它在/usr/local/bin目录中寻找它需要的库。但是假设你的新程序需要libblah,但是libblah在/usr/lib中,这是所有其他程序都会找到它的地方。您可以通过执行以下操作将其链接到/usr/local/lib:

ln-s/usr/lib/lib blah/usr/local/lib

或者,如果您愿意,可以将它光盘到/usr/local/lib:

光盘/usr/本地/图书馆

然后使用链接:

ln -s./lib/libblah

有几十个案例证明了软链接是有用的。当你更熟练的使用Linux的时候,你一定会发现它们,但是这些是最常见的。下一次,我们将看看你需要注意的一些奇怪的链接。

通过Linux Foundation和edX的免费“Linux简介”课程了解更多关于Linux的知识。

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理官网:www.chenqinet.cn。

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3