在 Linux 中,软链接(symbolic link,软连接)断链指的是:软链接指向的目标文件或目录不存在,导致 ls 显示红色闪烁、cat 报错 No such file or directory。
常见原因总结如下:
最常见原因。
ln -s /data/a.txt link_a
rm /data/a.txt
此时 link_a 仍存在,但已断链。
目标文件还在,但路径变了。
ln -s /data/a.txt link_a
mv /data/a.txt /data/b.txt
软链接不会自动更新。
软链接中保存的是路径字符串,不是 inode。
ln -s a.txt link_a # 相对路径
mv link_a /tmp/
移动到其他目录后,相对路径失效。
ln -s /mnt/usb/a.txt link_a
umount /mnt/usb
虽然不会“断”,但会失效或报错。
ln -s link_a link_a
目标存在,但:
ln -s /root/secret link_secret
普通用户访问时会像断链。
ln -s /data/a.tx link_a # 少写字母
如:
/tmp 被清)ls -l # 看颜色 / 箭头
readlink link # 看指向
test -e link # 是否存在
find /path -xtype l # 找断链
如果你有具体场景(比如 Docker、NFS、脚本生成),我可以帮你更精确定位原因。