在 Debian(及其他 Linux 发行版)中,软链接(symbolic link,符号链接)失效通常表现为:
ls 显示红色闪烁或带 -> 目标 但打不开No such file or directory下面按排查思路 + 常用命令一步步来。
ls -l /path/to/symlink
示例:
lrwxrwxrwx 1 root root 10 Jun 10 10:00 link -> /opt/app/bin
如果目标路径不存在,就是失效软链接。
test -e /path/to/symlink && echo "有效" || echo "失效"
或:
readlink -f /path/to/symlink
最常见原因。
ls -l /目标路径
解决:
ln -sf 新目标 软链接
软链接如果用相对路径,是相对于软链接所在目录。
示例:
ln -s bin/app /opt/link
实际指向:
/opt/bin/app
排查:
readlink 软链接
建议:
ln -s /opt/app/bin /opt/link
例如:
/mnt/data/x/mnt/data 没挂载检查:
mount | grep data
df -h
软链接本身权限不重要,但目标必须可读/可执行。
namei -l /path/to/symlink
会显示每一级目录权限,非常有用。
ln -s a a
检查:
readlink -f a
会卡住或报错。
常见于:
libxxx.so -> libxxx.so.1
排查:
ldd 程序
修复:
ln -sf libxxx.so.1 /usr/lib/libxxx.so
ls -l 软链接
readlink -f 软链接
namei -l 软链接
test -e 软链接 && echo OK || echo 失效
ln -sf 正确目标 软链接
如果你愿意,可以把:
ls -l 软链接发出来,我可以帮你精确定位是哪一类问题。