奇妙な問題があります。ネットワーク共有上に cygwin バイナリを含むディレクトリがあります。この cygwin ディレクトリは、以前は Dell PowerEdge ボックスにあり、IIS8 で仮想ディレクトリとしてマウントされていました。Web サービスは、次のように bash スクリプトへの呼び出しを実行します。
\\poweredgeshare\cygwin\bin\bash --login -c "//poweredgeshare/mytools/myshellscript.sh 2>&1 | tee -a //poweredgeshare/logs/logoutput.txt"
FS7600 フロント エンドを備えた新しい Dell Equalogic ファイル サーバーを取得し、Windows Server 2012 ボックスで IIS8 からの呼び出しを実行しようとするまで、これはうまく機能しました。その組み合わせで、次のエラーが発生します。
/usr/bin/bash: //fs7600/mytools/myshellscript.sh: Cannot allocate memory
Windows 8ボックスのIIS8にまったく同じfs7600共有を仮想ディレクトリとしてマウントすると、これは機能します。すべての Web 呼び出しは期待どおりに機能します。本番(サーバー2012)マシンにデプロイした後、爆発します。
を削除して代わりに2>&1 | tee -a
使用すると、すべての場合に機能することがわかりました。>
そのため、問題を引き起こしているティーへのパイプについて何かがあります。
私はシェルスクリプトの専門家ではありません-私はこれを書いていません.デバッグして、まったく同じシェルスクリプトを呼び出すまったく同じcygwinバイナリが新しいファイルシステムで爆発する理由を理解しようとしています.
何が機能し、何が機能しないかを要約すると:
- 古いファイル共有は開発環境 (Windows 8) と実稼働環境 (サーバー 2012) の両方で機能します
- 新しいファイル共有は開発環境で機能しますが、サーバー 2012 では機能しません
なぜこれが起こっているのかについて誰か考えがありますか?