如何在 Linux 中查找并修复损坏的符号链接
损坏的符号链接可能会导致 Linux 中的性能问题。以下是如何查找和修复损坏的符号链接。
想了解有关删除系统上损坏的符号链接的更多信息吗?也许有人告诉您无效的符号链接如何占用您的存储设备上的空间,而现在您想永久删除它们。
幸运的是,您可以在 Linux 计算机上下载多个实用程序来管理符号链接。这些工具还将帮助您找到损坏的软链接并永久修复它们。
在这里,我们将讨论如何使用符号链接和查找命令报告和修复系统上损坏的符号链接。
什么是符号链接以及如何创建符号链接?
一般来说,每个计算机系统都有两种类型的链接——软链接和硬链接。硬链接是将特定名称与系统上存在的文件链接的目录条目。这些是存储在存储上的特定地址中的原始文件。
另一方面,软链接是相互链接两个目录或文件的文本字符串。程序快捷方式是符号链接的一个很好的例子。假设文件 A 与文件 B 具有符号链接。这意味着文件 A 将存储文件 B 的绝对或相对路径。
要创建符号链接:
按键盘上的 Ctrl + Alt + T 启动终端。
创建一个名为 text.txt 的新文本文件。
touch text.txt
将另一个文本文件 (another.txt) 与您刚刚创建的文件 (text.txt) 链接。
ln -s text.txt another.txt
您刚刚使用符号链接将两个不同的文本文件链接在一起。 ln 命令是在基于 Linux 的操作系统上创建符号链接的默认方式。上述命令中的-s代表符号链接。
符号链接的主要问题是,如果删除或移动目标文件,符号链接不会自动删除。相反,该链接现在指向一个甚至不存在于您的系统上的文件。此类链接称为悬空链接、损坏链接、孤立链接或死链接。
查找并修复损坏的符号链接
首先,您需要确认系统中存在符号链接。您可以使用 ll 和 grep 命令轻松完成此操作。
ll | grep txt
上面的命令将列出与当前工作目录中的文本文件关联的所有符号链接。
现在,如果我们要通过删除父文本文件 (text.txt) 来破坏上面创建的符号链接:
rm text.txt
符号链接将被破坏并且不会从您的系统中删除。您可以通过输入 ll | 来确认这一点。再次在终端中输入 grep txt 命令。
虽然几个损坏的符号链接不会对您的计算机造成任何损害,但很快就会变成一千个。这就是为什么需要监视系统上的悬空链接。
修复这些损坏的符号链接的唯一方法是删除它们。您的系统包含数百个悬空链接,没有人有时间手动检查这些链接。在这种情况下,Linux 工具和命令被证明非常有用。
使用符号链接
Symlinks 是一个功能强大的实用程序,可为您提供管理和修复系统上损坏的符号链接所需的所有工具。由于默认情况下大多数 Linux 发行版上都没有安装它,因此您必须手动安装它。
您可以使用 Pacman 在 Arch Linux 上安装该软件包:
sudo pacman -S symlinks
在费多拉上:
sudo dnf install symlinks
在 CentOS 上:
sudo yum install symlinks
在基于 Debian 的发行版上:
sudo apt-get install symlinks
如果您运行的是 Ubuntu,则在安装符号链接包之前,您必须将 Universe 存储库添加到系统的存储库列表中。
sudo add-apt-repository universe
成功安装符号链接后,您需要检查系统上是否有孤立链接。为此,请输入:
symlinks .
。 (点) 字符指当前工作目录。如果您想报告 /home 目录中损坏的符号链接,您可以输入:
symlinks /home
如果您的系统上存在损坏的链接,您将得到如下所示的输出。
dangling: /home/sharmadeepesh/another.txt -> test.txt
要快速删除报告的符号链接,您可以在默认命令中使用 -d 标志。
symlinks -d .
要删除 /home 目录中的悬挂符号链接,请输入:
symlinks -d /home
这次,输出不仅会列出损坏的链接,还会报告该链接现已删除。
dangling: /home/sharmadeepesh/another.txt -> test.txt
deleted: /home/sharmadeepesh/another.txt -> test.txt
要以递归方式报告和删除给定目录中损坏的符号链接,请在默认命令中使用 -dr 标志,其中 d 代表删除,r 代表删除。 > 代表递归。
symlinks -dr .
使用查找命令
find 命令预装在每个 Linux 系统上。顾名思义,您可以使用此命令搜索文件夹和文件。 find 命令还允许您轻松报告和删除系统上的死软链接。
要列出当前工作目录中损坏的符号链接,请键入:
find . -xtype l
要查找系统上任何其他目录中存在的损坏链接,只需替换 。 (点) 字符与目录路径。以下命令将在 /home 目录中搜索损坏的链接。
find /home -xtype l
您还可以列出系统未使用的损坏的符号链接。
find . -xtype l ! -exec test -e {} \; -print
要检查这些损坏的链接指向的位置,请使用:
find . -xtype l -exec ls -l {} \+
根据系统上损坏的符号链接的数量,您将得到如下所示的输出。
lrwxrwxrwx 1 root root 19 Feb 21 11:53 /home/sharmadeepesh/another.txt -> /home/sharmadeepesh/text.txt
此外,您可以使用以下命令一次性删除损坏的符号链接。
sudo find . -xtype l -delete
还有一种删除死链接的替代方法:
sudo find . -xtype l ! -exec test -e {} \; -delete
管理 Linux 中的符号链接
符号链接对于 Linux 系统很重要,因为它们简化了计算机上的路径解析和管理过程。但如果不加以处理,损坏的符号链接可能会占用大量系统存储空间,而您甚至不会知道这一点。在这种情况下,符号链接和查找等实用程序就会发挥作用。
如果您是初学者并且想要提高 Linux 专业知识,那么时不时地学习新命令是完美的方法。用户应该知道他们需要哪个命令才能有效地解决给定的情况。