find命令仅挂在/ dev / fd / *


1

使用sudo find已随机停止为我工作。它曾经按预期工作,但现在一直挂着,只能说:

查找:/ dev / fd / 3:不是目录
查找:/ dev / fd / 4:不是目录

ls -lOeR /dev/fd/* 说/ dev / fd / 0,/ dev / fd / 1和/ dev / fd / 2是字符特殊文件,而3和4是目录,均由root拥有。

然后说:

/ dev / fd // 3:
ls:3:不是目录
ls:4:目录导致循环

/ dev / fd // 3在三个斜杠之前都有两个斜杠,我也不明白。有谁知道find发生了什么以及为什么随机开始。我再也无法使用find了,以前甚至从未听说过/ dev / fd。


我试图改善您问题的格式。如果我错了,请进一步编辑它(我无法在我的环境中真正捕获正确的输出)。
klanomath's

Answers:


2

查找并没有随机停止工作,但是正在正常运行。问题是您正在运行一个您不完全理解的命令。听起来您根本根本不想在/ dev目录中查找。

使用find和ls获得不同结果的原因是/ dev / fd目录不代表磁盘上的物理目录。相反,它是一个虚拟文件系统,其中包含查看/ dev / fd的进程已获取的文件描述符。

这意味着ls看到一个/ dev / fd,而find看到另一个(对于所有其他正在运行的进程类似)。

本质上,您想看一下find命令,并确保为您要执行的任务正确构造了它。如果您想在SO上询问此信息,请记住包括要尝试运行的完整命令以及期望该命令为您执行的操作。


谢谢。那是否意味着每个运行的进程都应有相等数量的/ dev / fd / n。我只有/ dev / fd 1、2、3和root。我也有些困惑,因为很长一段时间使用相同的格式,我从未见过有关/ dev / fd的消息,这似乎阻止了find的工作。然后,我可以ls -lOeR相同的文件夹,并得到找不到的结果。我通常使用find作为sudo find / -iname [搜索词],突然有一天我开始对/ dev / fd感到困扰。
大卫·史密斯

不,为什么这意味着应该有相等的数字?-没有道理。
jksoegaard '17

抱歉,这令人困惑,当我问到这个时,我不知道文件描述符是如何工作的。出于某种原因,我以“等于”的方式认为每个进程在/ dev / fd中都有自己的文件描述符。因此,如果我有300个正在运行的进程,那么/ dev / fd中将有300个条目。您的答案意味着file命令很好,只是运行的进程的文件描述符find现在在VFS中具有文件描述符,如果运行相同的脚本会导致输出不同,则以前必须没有该文件描述符?
大卫·史密斯

文件描述符已经存在了很长时间-这并不是什么新鲜事。现在,您要提到的脚本是您以前没有提到过的。如果这是您的真正问题,也许您会专门针对该脚本提出一个新问题。几乎几乎没有任何机会找不到该文件,或者文件描述符在您的系统上丢失了一段时间。
jksoegaard '18
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.