Linux 软链接 “Too many levels of symbolic links”问题解决与研究

本文介绍了在Linux中遇到'Too many levels of symbolic links'错误时如何解决。通过理解错误原因,可以采取使用相对路径或绝对路径创建符号链接的方式避免问题。同时,提供了正确和错误的删除软链接的方法,并给出了解决'File exists'错误的技巧。
部署运行你感兴趣的模型镜像

参考文章:https://www.baeldung.com/linux/too-many-levels-of-symlinks

使用ln命令创建符号链接

要使用ln命令创建符号链接,我们需要传递 –s或–符号选项:
$ ln -s A B 源文件即A,目的地是B。
意义:从 /B/A 中读取源A的内容。

有两个文件夹data和model在同一个目录下,想要将data链接到model下,从而可以从model/data中读取源data的内容。

└── [drwxr-xr-x] ./mydir
    ├── [drwxr-xr-x] ./mydir/data
    └── [drwxr-xr-x] ./mydir/model
$ cd /mydir
$ ln -s data model
.
├── [drwxr-xr-x] ./data
└── [drwxr-xr-x] ./model
    └── [lrwxrwxrwx] ./model/data -> data

符号链接已创建,但实际上已损坏。

可以使用find命令找到所有损坏的符号链接:

$ find -L -xtype l
find:./test/model/data’: Too many levels of symbolic links

此错误的原因是,具有相对源的符号链接始终相对于符号链接目录,而不是我们创建链接的目录。

解决方案:

1.相对路径
2.绝对路径

1. 使用相对路径

因为是相对于目标文件,我们可以通过目标文件相对路径来指定源文件,但要注意指定的源文件路径都将拼接在目标链接之后成为真正用于创建的源路径,可以使用以下方式:

ln -s ../data model

以vscode为例,可以看到model下有了data软链接文件,即model/data(如图后面会有一个反回车一样的图标):
在这里插入图片描述

2. 使用绝对路径

我们可以为源参数使用绝对路径:

$ cd /mydir
$ ln -s "$(pwd)/data" model
$ tree --noreport -fp
.
├── [drwxr-xr-x] ./data
└── [drwxr-xr-x] ./model
    └── [lrwxrwxrwx] ./model/data -> /mydir/data

验证链接是否正常工作:

├── [drwxr-xr-x] ./data
│   └── [-rw-r--r--] ./data/sample.txt
└── [drwxr-xr-x] ./model
    └── [lrwxrwxrwx] ./model/data -> /mydir/data
$ cd mydir/data
$ ls -l
total 0
-rw-r--r-- 1 baeldung baeldung 0 Aug 3 20:51 sample.txt

如上,已经成功地使用符号链接访问源目录并列出所有文件。

将符号链接到绝对路径的缺点是,当目录名称更改时,它们很容易被破坏。

删除软连接

正确的是:rm -rf hb_link, 这里的f是强制的意思。

错误的是:rm -rf hb_link/ 这个会把整个目录都删了

备注:想要删除链接文件要用以下命令 rm /home/hb_link 只是少了一个“ / ” 删除的 就是链接文件, 也就是在文件的最后不要加上/

问题: ln: failed to create symbolic link ‘/usr/bin/xx’: File exists

把 -s 命令修改成 -sf 命令;-f 命令的意思是强制执行,也就意味着如果不存在就执行创建,存在就执行覆盖掉

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值