我们有几个 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
可以是匹配多个文件的模式。