“找到”打开的文件?

Modified on: Mon, 09 Sep 2019 06:00:02 +0800

我最近发布了这个命令:
find . -type f | wc -l

计算我的public_html文件夹中有多少个文件。

不久之后,Nginx返回了500内部服务器错误,并且error.log被“太多打开文件”错误所淹没。我想也许这可能是这个问题的根源?

作者:Tar

最佳答案

strace -eopen find . -type f与GNU find(来自Debian Squeeze的4.4.2)答案似乎是“不,找不到打开文件”,但它 打开目录:

open("details", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open(".uml", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open(".dbus", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5

等。当然所有这些命令都返回相同的文件句柄#,强烈暗示find再次关闭它们。我制作了一个非常深的目录集,似乎find使用..来上一个目录,而不是让目录保持打开状态。

虽然看起来确实非常重要。

作者:DerfK

相关问答

添加新评论