在 Linux 中,软链接(symbolic link,软连接)断链通常指软链接指向的目标文件或目录已经被删除、移动或路径变更,导致 ls 显示红色闪烁或 readlink 仍能看到旧路径但访问失败。
下面按常见场景 + 修复方法说明。
ls -l 软链接名
示例:
lrwxrwxrwx 1 user user 10 Jun 10 10:00 link -> /old/path
如果 /old/path 不存在,就是断链。
也可用:
readlink 软链接名
直接重建软链接即可
ln -sf 新的目标路径 软链接名
示例:
ln -sf /new/path/file.txt link
-f表示强制覆盖原软链接
# 先删除旧软链接(可选)
rm 软链接名
# 重新创建
ln -s /正确/目标/路径 软链接名
⚠️ 注意:
rm 软链接名 不会删除目标文件,只删链接本身。
比如你在 /home/user/ 下建了:
ln -s data/file.txt link
但 link 被移到了 /home/user/sub/,就会断。
修复方式:用绝对路径更稳妥
ln -sf /home/user/data/file.txt link
或重新在正确目录创建相对路径:
cd /home/user/sub
ln -sf ../data/file.txt link
find /path -xtype l
find /path -xtype l -exec ls -l {} \;
find /path -xtype l -delete
例如:
ln -s /mnt/data/file link
但 /mnt/data 没挂载。
修复:
mount /dev/sdXn /mnt/data
❌ 对软链接使用 rm -r
rm -r link # 不必要,普通 rm 即可
❌ 用 vim 直接打开软链接“修复”
❌ 混淆软链接和硬链接
# 判断
ls -l link
# 修复
ln -sf 正确目标路径 link
如果你愿意,可以把:
ls -l 软链接readlink 软链接发出来,我可以帮你精确给出一条修复命令。