メモリ使用量が高いと、zipコマンドは失敗します。

メモリ使用量が高いと、zipコマンドは失敗します。

レポートを生成して電子メールで送信できる複数のPerlスクリプトがあります。電子メールでファイルを送信するスクリプトには.zip拡張が必要です。レポートスクリプトは.txt、または.xlsファイルを生成した後に次のzipコマンドを実行します。

print `zip -m $zip_filename $output_filename`;

特定の状況(通常、Perlスクリプトが大量のメモリを使用している場合)で上記のコマンドが失敗することがあります。私が収集したところによると、コマンドの実行にメモリが不足しているため、スクリプトは失敗しますzip。これは散発的な問題であり、把握するのは少し難しいです。

.zipファイルを生成する必要がありますが、他の圧縮方法は使用できません。

誰かがここで何が起こっているのか教えてほしいです。フラグが-m原因かもしれません。

私にとって奇妙なことは、zipコマンドを手動で複数回実行しましたが、bash多くのメモリを使用しても決して失敗しないことです。

free以下は、私が話しているメモリ量のアイデアを提供するコマンドの結果です。レポートスクリプトは時々10GBを超えるメモリを使用します。

-bash-4.1$ free
             total       used       free     shared    buffers     cached
Mem:      49409336   48948192     461144          0    1184716    8147564
-/+ buffers/cache:   39615912    9793424
Swap:      2047992    2047988          4

$output_filename複数のファイルに一致するパターンにすることができます。

関連情報