如何删除“符号链接级别过多”的目录

Kri*_*ien 8 symlink

我在 RHEL 系统上遇到了一些奇怪的问题。

在我们的系统上,我们的主目录自动挂载在/export/home. 有一些例外,因为我正在尝试将 gluster 用于我们的家庭目录。这些是自动安装在/gluster/home

这适用于我们所有(30 多台)服务器。今天,这停止了对其中之一的工作。我收到错误:

Too many levels of symlinks
Run Code Online (Sandbox Code Playgroud)

当试图cd进入/gluster/home/$HOME...

我最终临时移动/gluster/gluster_broken,并创建了一个新的/gluster/home,重新启动的 autofs 并且事情再次工作。

现在我想删除/gluster_broken.

问题在于/gluster_broken/home. 我不知道它是从哪里来的。到目前为止,我试图摆脱它的努力没有结果。

[root@dc1-03 /]# rm -rf gluster_broken/
rm: cannot remove `gluster_broken/home': Too many levels of symbolic links
[root@dc1-03 /]# rm -rf /gluster_broken/
rm: cannot remove `/gluster_broken/home': Too many levels of symbolic links
[root@dc1-03 /]# rm -rf /gluster_broken/home/
rm: cannot remove `/gluster_broken/home/': Is a directory
[root@dc1-03 /]# rm -rf /gluster_broken/home
rm: cannot remove `/gluster_broken/home': Too many levels of symbolic links
[root@dc1-03 /]# rmdir /gluster_broken/home/
rmdir: failed to remove `/gluster_broken/home/': Device or resource busy
[root@dc1-03 /]# fuser -m /gluster_broken/home/
Cannot stat /gluster_broken/home/: Too many levels of symbolic links
Cannot stat /gluster_broken/home/: Too many levels of symbolic links
Cannot stat /gluster_broken/home/: Too many levels of symbolic links
[root@dc1-03 /]# ls -ld /gluster_broken/home/
ls: cannot access /gluster_broken/home/: Too many levels of symbolic links
[root@dc1-03 /]# ls -ld /gluster_broken/home
drwxr-xr-x. 2 root root 0 Jan 22 10:20 /gluster_broken/home
[root@dc1-03 /]# fuser -m /gluster_broken/home
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,大多数命令都会产生相同的错误消息。我真的很想摆脱这个问题。但我在这里有点不知所措。有什么建议?

建议命令的输出:

[root@dc1-03 /]# ls /gluster_broken/
home
[root@dc1-03 /]# ls /gluster_broken/home/
ls: cannot access /gluster_broken/home/: Too many levels of symbolic links
[root@dc1-03 /]# ls -hblF /gluster_broken /gluster_broken/home 
/gluster_broken:
total 0
drwxr-xr-x. 2 root root 0 Feb  4 12:00 home/
ls: cannot open directory /gluster_broken/home: Too many levels of symbolic links
Run Code Online (Sandbox Code Playgroud)

X T*_*ian 5

尝试寻找。

\n\n
find -L /gluster_broken -mindepth 10\n
Run Code Online (Sandbox Code Playgroud)\n\n

找到链接循环

\n\n

rm然后对错误文件进行非递归

\n\n

find 将跟踪链接并找到相同的“太多级别”错误。我使用 -mindepth 过滤掉任何深度小于 10 的内容,以避免出现正常的文件/目录。是的,这确实假设您的普通树的深度不超过 10 个。该命令试图做的就是找到错误的文件。

\n\n

- 编辑

\n\n

我认为遵循命令更好,

\n\n
find -L /gluster_broken >/dev/null\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我的测试

\n\n
$ find .\n.\n./dira\n./dira/a\n./dira/dirb\n./dira/dirb/dirc\n./dira/error\n./dira/b\n./dira/test\n./dira/test/ab&<cd.file\n./dira/test/magic?newlines\n./dira/test/cleanup\n$ find -L . >/dev/null\nfind: \xe2\x80\x98./dira/a\xe2\x80\x99: Too many levels of symbolic links\nfind: \xe2\x80\x98./dira/error\xe2\x80\x99: Too many levels of symbolic links\nfind: \xe2\x80\x98./dira/b\xe2\x80\x99: Too many levels of symbolic links\n$ \n
Run Code Online (Sandbox Code Playgroud)\n\n

---编辑2

\n\n

我认为我检查文件系统的建议(评论)可能是最好的,我刚刚看到这个答案,想知道您是否有类似的问题。

\n