0

我有一个奇怪的问题。我在包含 cygwin 二进制文件的网络共享上有一个目录。这个 cygwin 目录曾经位于戴尔 poweredge 盒子上,并作为虚拟目录安装在 IIS8 中。Web 服务将执行一个调用,然后调用一个 bash 脚本,如下所示:

\\poweredgeshare\cygwin\bin\bash --login -c "//poweredgeshare/mytools/myshellscript.sh 2>&1 | tee -a //poweredgeshare/logs/logoutput.txt"

在我们得到一个带有 FS7600 前端的新戴尔 Equalogic 文件服务器并尝试在 Windows Server 2012 机器上从 IIS8 执行该调用之前,这非常有效。使用这种组合,我现在收到以下错误:

/usr/bin/bash: //fs7600/mytools/myshellscript.sh: Cannot allocate memory

如果我将完全相同的 fs7600 共享安装在我的 Windows 8 框的 IIS8 上作为虚拟目录,则此方法有效。所有网络调用都按预期运行。在我将它部署到生产(服务器 2012)机器后它就爆炸了。

我发现如果我删除2>&1 | tee -a并只使用>它,它在所有情况下都有效。所以有一些关于三通的管道会导致问题。

我不是 shell 脚本专家——我没有写这个,我只是想调试它并理解为什么完全相同的 cygwin 二进制文件调用完全相同的 shell 脚本但只是在一个新的文件系统上爆炸。

所以总结一下哪些有效,哪些无效:
- 旧文件共享适用于开发(Windows 8)和生产(服务器 2012)环境
- 新文件共享适用于开发,但不适用于服务器 2012

有没有人对为什么会发生这种情况有任何想法?

4

0 回答 0