Temos vários scripts perl, que geram e enviam relatórios por e-mail. O script que envia os arquivos por e-mail espera uma extensão .zip
. Os scripts de relatório geram um arquivo .txt
ou .xls
e, em seguida, executam o seguinte comando zip
:
print 'zip -m $zip_filename $output_filename';
O que está acontecendo é que, em alguns casos (normalmente, quando o script perl usa muita memória), o comando acima falha. De que eu recolhi o script falhar, porque não há memória suficiente para executar o comando zip
. Este é um problema esporádico e um pouco difícil de definir.
Eu tenho que gerar arquivos .zip
e não posso usar um método de compactação diferente.
Eu estava esperando que alguém pudesse me dizer o que está acontecendo aqui. Estou suspeitando que o sinalizador -m
possa estar causando isso.
O que é estranho para mim é que eu executei manualmente o comando zip
de bash
várias vezes, e ele nunca falhou, mesmo usando muita memória.
Aqui está o resultado de um comando free
para dar uma idéia de quanta memória eu estou falando. Os scripts de relatório podem ocasionalmente usar mais de 10 GB de memória:
-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
pode ser um padrão correspondente a mais de um arquivo.