目前我正在运行几个处于实验测试阶段的脚本。不幸的是,它们有时会崩溃并生成大型“core-perl-11-544-546-27320-1xxxxxxx”perl 核心转储文件。
我想确保如果将来这些文件再次崩溃,它们不会生成 perl 转储文件,或者转储的文件大小受到限制。
现在有一些脚本检查 Perl 核心转储文件,如果它们大于设定的大小,则将其删除,但这显然是对膝盖受伤的创可贴。
我该如何限制 perl 转储文件的大小,或阻止创建一个?
目前我正在运行几个处于实验测试阶段的脚本。不幸的是,它们有时会崩溃并生成大型“core-perl-11-544-546-27320-1xxxxxxx”perl 核心转储文件。
我想确保如果将来这些文件再次崩溃,它们不会生成 perl 转储文件,或者转储的文件大小受到限制。
现在有一些脚本检查 Perl 核心转储文件,如果它们大于设定的大小,则将其删除,但这显然是对膝盖受伤的创可贴。
我该如何限制 perl 转储文件的大小,或阻止创建一个?
为了防止从 perl 脚本中创建核心转储文件,您可以使用(从How do I set a ulimit from inside a Perl script that apply to its children? 中窃取的过程?):
require 'syscall.ph';
require 'sys/resource.ph';
$rstruct = pack "L!L!",0,&RLIM_INFINITY;
syscall(&SYS_setrlimit,&RLIMIT_CORE,$rstruct);
要将转储限制为特定大小,请将0
上述更改为所需大小。
不会
使用 BSD::Resource;setrlimit(RLIMIT_CORE, 0, 0);
更简单?