目录中的“ls”对于某些文件输出“没有这样的文件或目录”

目录中的“ls”对于某些文件输出“没有这样的文件或目录”

cd进入了一个包含大量文件的目录,确切地说有 40,948 个文件。当我发出命令时,ls需要很长时间,在命令最终将结果打印到屏幕上之前,它告诉我一些文件的“ls:无法访问:没有这样的文件或目录”。

每次的文件名并不相同。当我执行ls -l某些文件没有 posix 权限时,只是“??????”在文件名之前。

我尝试chown -R该目录是因为我想更改组,并且我得到了“chown:无法访问”或“chown:更改所有权”+“:没有这样的文件或目录”的混合,甚至比我使用ls.

这对我来说突出表明,我什至不知道 Linux 中的目录是否有目录,我认为目录可能已损坏。但结果总是不同的事实表明事实并非如此。

这可能是 /etc/security/limits.conf 中的“nofile”问题吗?

答案1

在我看来,它被其他进程大量使用。

收集您看到的信息不一定是原子的。它可能会获取文件名列表,然后查找文件上的信息(要么是长列表,要么是为输出着色)。如果在这两个操作之间删除文件,那么您将得到与您所描述的类似的输出。

答案2

这个长时间的中断是由于在获得输出之前对目录中的 40,000 多个文件进行排序造成的ls。尝试ls -lU | more(未排序)更接近奇怪的文件名。另一种选择是--show-control-chars

相关内容