linux – Find返回“find:.:Permission denied”,但我不是在搜索

我有一个巨大的 shell脚本,我正在排除故障.我经常使用sudo从我的主目录运行脚本.每当执行一次查找时,我都会看到此错误:

发现:.:权限被拒绝

确实root没有访问我的主目录(这是当前工作目录或上面的错误中的.),但我不是要求find在我的主目录中做任何事情而宁愿完全不管它.

要真正开车回家我跑了这个:

sudo find / dev -maxdepth 1-type f

并仍然得到相同的错误.如果删除了-type -f,则会将错误附加到预期结果的末尾.当然,如果我cd / dev没有错误..可能因为root可以访问/ dev.即使我认为它不会导致问题,但它会使脚本看起来很麻烦.如何防止脚本显示这些错误?

我跑了:

strace find /dev -maxdepth 1

在GNU / Linux(Ubuntu)上,结果发现find使用fchdir syscall遍历目录树,最后执行fchdir返回原始工作目录.这是一个片段:

open(".", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_NOFOLLOW) = 4
fchdir(4)                               = 0

... irrelevant ...

write(1, "/dev\n", 5)                   = 5
open("/dev", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 5
fcntl64(5, F_GETFD)                     = 0x1 (flags FD_CLOEXEC)
fchdir(5)                               = 0

... potentially more fchdirs ...

fchdir(4)                               = 0
close(4)                                = 0

我的暗示?运行find之前的cd / tmp(或其他一些完全可访问的目录).

相关文章
相关标签/搜索