linux – 如何从适用于其子代的Perl脚本中设置ulimit?

linux – 如何从适用于其子代的Perl脚本中设置ulimit?,第1张

概述我有一个Perl脚本,它执行各种安装步骤来为我们公司设置开发盒.它运行各种 shell脚本,其中一些由于低于所需的ulimits(特别是在我的情况下为堆栈大小-s)而崩溃. 因此,我想设置一个适用于从我的主Perl中启动的所有脚本(子)的ulimit,但我不知道如何实现这一点 – 任何尝试从脚本中调用ulimit只会将其设置为特定的子shell,立即退出. 我知道在运行Perl脚本或使用/etc/ 我有一个Perl脚本,它执行各种安装步骤来为我们公司设置开发盒.它运行各种 shell脚本,其中一些由于低于所需的ulimits(特别是在我的情况下为堆栈大小-s)而崩溃.

因此,我想设置一个适用于从我的主Perl中启动的所有脚本(子)的ulimit,但我不知道如何实现这一点 – 任何尝试从脚本中调用ulimit只会将其设置为特定的子shell,立即退出.

我知道在运行Perl脚本或使用/etc/security/limits.conf之前我可以调用ulimit但是我不希望用户知道任何这些 – 他们应该只知道如何运行脚本,为他们照顾所有这些.

我每次运行命令时都可以运行ulimit,比如ulimit -s BLA; ./cmd但我不想每次都复制这个,我觉得那里有一个更好,更清洁的解决方案.

另一个疯狂的“解决方法”是创建一个名为BLA.sh的包装脚本,它将设置ulimit并调用BLA.pl,但同样,这是我的脑海中的黑客,现在我有2个脚本(我甚至可以制作BLA.pl使用“ulimit -s BLA; ./BLA.pl –foo”调用自己,并根据它是否看到–foo或不同而采取不同的行为,但这甚至比以前更黑.

最后,显然我可以安装BSD :: Resource但我想避免使用外部依赖.

那么从Perl脚本中设置ulimit并将其应用于所有子节点的方法是什么?

谢谢.

解决方法 您已经回答了以下问题:使用 BSD::Resource.

Perl核心中没有任何与setrlimit接口的东西.如果你不能(或不会)使用标准方法,那么你必须使用Hack.您已经描述的任何方法都可以使用. (注意,您可以创建一个子例程来预先添加ulimit -s BLA;对每个命令,然后使用该子而不是系统.)

总结

以上是内存溢出为你收集整理的linux – 如何从适用于其子代的Perl脚本中设置ulimit?全部内容,希望文章能够帮你解决linux – 如何从适用于其子代的Perl脚本中设置ulimit?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1039793.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存