Linux 中软链接(符号链接,symlink)失效通常是指执行或访问软链接时报错,例如:
No such file or directory
或
Too many levels of symbolic links
下面按常见原因 → 排查方法 → 解决办法来说明。
软链接只是“指向路径”,源不存在就会失效。
ln -s /opt/app/bin/app /usr/local/bin/app
# 如果 /opt/app 被删了,链接就坏了
软链接中的路径是相对于链接所在目录解析的。
ln -s ../bin/app ./app
如果移动了软链接本身,相对路径就会错。
ln -s a b
ln -s b a
ls -l 软链接名
示例:
lrwxrwxrwx 1 root root 10 Mar 1 10:00 app -> /opt/app/bin/app
ls -l /opt/app/bin/app
或:
readlink -f 软链接名
namei -l 软链接名
rm 软链接名
ln -s 正确的源路径 软链接名
建议用绝对路径:
ln -s /usr/local/app/bin/app /usr/bin/app
如果你必须用相对路径:
# 在软链接所在目录执行
ln -s ../real/path/xxx linkname
# 例如
apt install --reinstall xxx
mount | grep 源路径
df -h 源路径
如果是 U 盘 / NFS 没挂载:
mount /dev/sdb1 /mnt
namei -l 软链接
发现互相指向就删除重建。
✅ 优先使用绝对路径
ln -s /absolute/path target
✅ 不要随便移动软链接文件
✅ 脚本中判断源是否存在
[ -e 软链接 ] || echo "链接失效"
✅ 重要服务用 systemd 或包管理,而非手工软链
如果你愿意,可以把:
ls -l 软链接readlink 软链接发出来,我可以帮你精准定位是哪一类问题。