我有一个 Perl 脚本,它执行各种安装步骤来为我们公司设置一个开发框。它运行各种 shell 脚本,其中一些由于低于所需的 s (特别是在我的情况下ulimit
的堆栈大小)而崩溃。-s
因此,我想设置一个ulimit
适用于children
从我的主要 Perl 脚本开始的所有脚本(子shell,它立即退出。
我知道我可以ulimit
在运行 Perl 脚本或使用之前调用,/etc/security/limits.conf
但我不希望用户知道这些 - 他们应该只知道如何运行脚本,这应该为他们处理所有这些。
我也可以在ulimit
每次运行命令时运行,就像这样,ulimit -s BLA; ./cmd
但我不想每次都重复这个,我觉得那里有一个更好、更清洁的解决方案。
另一个疯狂的“解决方法”是制作一个名为 BLA.sh 的包装脚本,该脚本将设置 ulimit 并调用 BLA.pl,但同样,我认为这是一个 hack,现在我有 2 个脚本(我什至可以制作 BLA.pl用“ulimit -s BLA; ./BLA.pl --foo”调用自己,并根据它是否看到 --foo 采取不同的行动,但这比以前更难了)。
最后,显然我可以安装 BSD::Resource 但我想避免使用外部依赖项。
那么从 Perl 脚本中设置 ulimit 并使其适用于所有子级的方法是什么?
谢谢你。