bash - 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 安装在这些服务器上。
我可以在这些服务器上检查什么来找出导致此问题的原因?
配置细节:
- Cygwin - 安装版本 2.901(64 位)
- 重击 4.4.12-3
- findutils 4.6.0-1
- grep 3.0-2
解决方案
推荐阅读
- c++ - 将完整的图片目录列表获取到不同的文件夹
- vue.js - 如何在Vue中再次从拦截器发送请求?
- reactjs - React Native:FlatList keyExtractor & toString() 问题?
- java - 使用 Camera2 API 的相机缩放设置
- android - 应用发明者 2 在填写之前清除列表
- spring-boot - 向新注册用户发送 gmail 消息时遇到问题
- html - CSS 转换:缩放无法按预期工作
- javascript - Angular IO 的异步问题
- android-studio - Proguard 6.0.3 因 java.lang.ArrayIndexOutOfBoundsException 失败:-1
- node.js - 单线程nodejs“并行”运行?