查找:检测到文件系统循环


9

当我尝试使用查找文件时find -name "filename",出现错误消息:

./var/named/chroot/var/named' is part of the same file system loop as `./var/named'

我运行了该ls -ldi /var/named/chroot/var/named/ /var/named命令,并且inode编号相同。研究表明解决方法是删除硬链接/var/named/chroot/var/named/使用rm -f,并重新创建为一个目录,但我这样做的时候,我建议,它不能被删除,因为它是一个目录了。我该如何解决?我正在使用Plesk 11运行Centos 6。

mount命令给出以下信息:

/dev/vzfs on / type reiserfs (rw,usrquota,grpquota)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
none on /dev type tmpfs (rw,relatime)
none on /dev/pts type devpts (rw,relatime)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
/etc/named on /var/named/chroot/etc/named type none (rw,bind)
/var/named on /var/named/chroot/var/named type none (rw,bind)
/etc/named.rfc1912.zones on /var/named/chroot/etc/named.rfc1912.zones type none (rw,bind)
/etc/rndc.key on /var/named/chroot/etc/rndc.key type none (rw,bind)
/usr/lib64/bind on /var/named/chroot/usr/lib64/bind type none (rw,bind)
/etc/named.iscdlv.key on /var/named/chroot/etc/named.iscdlv.key type none (rw,bind)
/etc/named.root.key on /var/named/chroot/etc/named.root.key type none (rw,bind)

Answers:


9

named,即DNS服务器,在chroot中运行。要访问配置文件,启动脚本用于mount --bind使配置目录在chroot内部可见。这意味着/var/named/与相同/var/named/chroot/var/named/var/named/chroot/var/named/chroot/var/named依此类推。这是一个递归目录结构,因此,如果find尝试对其进行横向扩展,它将永远无法终止其执行,因此它意识到两个目录实际上是相同的,并向您显示该消息以警告您。

该消息表示find不会在内部搜索,/var/named/chroot/var/named因为它意识到它与之前已经看到的其他目录相同。这是一条完全无害的消息,您可以放心地忽略它:跳过/var/named/chroot/var/namedfind操作后,操作将继续正常进行。


因此,如果在此语句后没有任何内容,仅表示找不到该文件?
user1780242'9

是的,猜猜是这样。对您知道存在的文件尝试相同的操作。同样,您可以禁止在命令行中添加`2> / dev / null`的错误消息。
pqnet 2014年

1

该消息触发返回码1,并且不能忽略,重定向也不会起作用。

使用findutils findutils-4.4.2-6.el6.x86_64

看来这是相应的错误报告:

在运行Linux内核的系统上,对于已使用“ mount --bind”在其他位置重新挂载的文件系统上的文件,“ find -printf%F”不再产生错误的答案。(Savannah错误#14921)。

如果您无法修复受影响的脚本(例如,由于它是由第三方编写),则(安全性受到挑战)的解决方案是至少暂时删除bind-chroot软件包。


0

我不认为这是一个硬链接。通常,目录硬链接是被禁止的。我可能是一个软链接,但它看起来像是一个安装循环:似乎又/var/named或者/var再次安装在上/var/named/chroot。也许是绑定安装(mount -o bind)或只是普通安装。

您可以发布mount命令的输出吗?另外,也许这是chroot监狱需要的挂载,您最好离开它。


这很可能是mount --bind因为它是chroot中唯一起作用的东西。
pqnet 2014年

0

该问题是由其init脚本named/var/named目录挂载到上引起的/var/named/chroot。初始化脚本中也提供了此问题的解决方案。

mount_chroot_conf()
{
   # Mount source is a directory. Mount it only if directory in chroot is
   # empty.

如上所述,该mount功能仅在目录为空时才起作用。因此,请使用以下解决方案:

  1. 停止 named
  2. 创建目录 /var/named/chroot/var/named
  3. 在此目录中创建一个空文件
  4. 开始 named
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.