首页 > 解决方案 > Cygwin 随机抛出大部分或全部与 fork 调用相关的“权限被拒绝”错误

问题描述

一段时间以来,嵌入find带有参数的循环命令的脚本-exec开始在我们的几个客户端服务器上失败并显示一条"Permission denied"消息。

为了隔离问题,我尝试了以下行:

find "/cygdrive/path/to/dir" some-filter-args -exec echo {} ';' -exec file {} ';'

一段时间后,在find继续时出现以下错误消息(这可能会出现多次):

find : ‘echo’: Permission denied

这似乎是一个非常严重的错误,因为它与echo. ls -l检查显示拥有/bin/echo.exe管理员权限的登录用户(并且 Cygwin 以管理员身份运行)。

我测试了另一条线,将find输出输送到一个while循环:

find "/cygdrive/path/to/dir" some-filter-args | while read a ; do wc –l "$a" ; done

发生错误,并带有不同但相关的消息:

dofork: child -1 - CreateProcessW failed for 'Path\To\Cygwin\bin\bash.exe', errno 13
-bash: fork: Permission denied

脚本本身基本上是一个执行 grep 调用管道命令行的查找循环:

find "/cygdrive/path/to/dir" some-filter-args \
     -exec grep -L 'text' '{}' ';' |
while read line ; do
  # [...]
  # At least the command below should perform a fork() call
  echo "some_stuff" | (>&2 tee -a "/logs/output.log")
  # [...]
done

出现以下错误:

      1 [main] bash 645 dofork: child -1 - CreateProcessW failed for 'Path\To\Cygwin\bin\find.exe', errno 13
/cygdrive/path/to/a/script/w/pipe: fork: Permission denied
      1 [main] bash 23354 dofork: child -1 - CreateProcessW failed for 'Path\To\Cygwin\bin\find.exe', errno 13

/cygdrive/path/to/a/script/w/pipe: fork: Permission denied
find: ‘grep’ terminated by signal 13
      1 [main] find 644 dofork: child -1 - CreateProcessW failed for 'Path\To\Cygwin\bin\find.exe', errno 13
find: cannot fork: Permission denied  

我感觉有些东西阻止了进程执行超出限制的分叉调用。Symantec End Point Protection 安装在这些服务器上。

我可以在这些服务器上检查什么来找出导致此问题的原因?

配置细节:

标签: bashfindcygwinforkwindows-server-2012

解决方案


推荐阅读