Articles of ulimit

如何在适用于子级的Perl脚本中设置ulimit?

我有一个Perl脚本,执行各种安装步骤来为我们公司设置一个开发框。 它运行各种shell脚本,其中一些由于低于所需的ulimit (特别是堆栈大小 – 在我的情况下)而崩溃。 因此,我想设置一个适用于从我的主Perl中启动的所有脚本( children )的ulimit ,但我不知道如何实现这一点 – 任何从脚本内调用ulimit的尝试只设置它该特定的子shell,立即退出。 我知道我可以在运行Perl脚本之前调用ulimit或者使用/etc/security/limits.conf但是我不希望用户知道这些 – 他们只应该知道如何运行脚本,它应该为他们照顾这一切。 我也可以在每次运行命令时运行ulimit ,像这样ulimit -s BLA; ./cmd ulimit -s BLA; ./cmd但我不想每次重复这个,我觉得有一个更好,更干净的解决scheme。 另一个疯狂的“解决方法”是制作一个名为BLA.sh的包装脚本,它将设置ulimit并调用BLA.pl,但是在我看来,这是一个破解,现在我有两个脚本(我甚至可以使BLA.pl用“ulimit -s BLA; ./BLA.pl-foo”来调用自己,根据它是否看到–foo而不同,但是这比以前更加黑客)。 最后,显然我可以安装BSD ::资源,但我想避免使用外部依赖。 那么从Perl脚本中设置ulimit的方法是什么,并使其适用于所有的孩子? 谢谢。

从linux内的jvm中查找硬性和软性打开的文件限制(ulimit -n和ulimit -Hn)

我有一个问题,我需要从java / groovy程序中找出linux中进程的软硬件打开文件限制。 当我从terminal执行ulimit时,会为软打开的文件限制提供单独的值。 $ ulimit -n 1024 $ ulimit -Hn 4096 但是,如果我常规执行它,它会忽略软限制并始终返回硬限制值。 groovy> ['bash', '-c', 'ulimit -n'].execute().text Result: 4096 groovy> ['bash', '-c', 'ulimit -Hn'].execute().text Result: 4096 请让我知道,如果我失去了一些东西。 我已经使用Ubuntu 12.04,Groovy版本:1.8.4 JVM:1.6.0_29执行。 更新 :我在Java中尝试了同样的事情。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.io.StringWriter; import java.io.Writer; public class LinuxInteractor { public static int executeCommand(String […]

限制内存使用

我在一台16GB RAM和64位操作系统的Linux机器上运行Python 2.7。 我写的一个python脚本可以把太多的数据加载到内存中,这会使机器变慢,甚至不能再杀死进程。 虽然我可以通过调用来限制内存: ulimit -v 12000000 在运行脚本之前在我的shell中,我想在脚本中包含一个限制选项。 在我看来, resource模块被认为具有与ulimit相同的权力。 但是打电话: import resource _, hard = resource.getrlimit(resource.RLIMIT_DATA) resource.setrlimit(resource.RLIMIT_DATA, (12000, hard)) 在我的脚本开始什么都没有。 即使设置低至12000的值也不会使程序崩溃。 我也尝试了与RLIMIT_STACK相同的结果。 奇怪的是,呼吁: import subprocess subprocess.call('ulimit -v 12000', shell=True) 什么都不做。 我究竟做错了什么? 我在网上找不到任何实际使用的例子。

ulimit -t在Ubuntu下

我运行的是Ubuntu Linux(2.6.28-11-generic#42 -Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686 GNU / Linux),看起来命令“ulimit -t”无法正常工作。 我跑了: ulimit -t 1; myprogram “myprogram”是一个无限循环。 我希望程序在1秒后中断,但并没有停止。 我在Linux Fedora安装上尝试了同样的事情,它按预期工作。 是否需要设置一些configuration才能正常工作? – tsf

为什么ulimit无法成功限制常驻记忆,以及如何?

我启动一个新的bash shell,并执行: ulimit -m 102400 ulimit -a " core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 20 file size (blocks, -f) unlimited pending signals (-i) 16382 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) 102400 open files (-n) 1024 pipe size (512 bytes, -p) 8 […]

什么是“ulimit -s unlimited”呢?

在堆栈分配上有很多相关的问题是可以理解的 什么和堆栈和堆在哪里? 为什么堆栈大小有限制? 堆栈和堆内存的大小 但是,在各种* nix机器上,我可以发出bash命令 ulimit -s unlimited 或csh命令 set stacksize unlimited 这如何改变程序的执行方式? 对程序或系统性能有什么影响(例如,为什么这不是默认的)? 如果有更多的系统细节是相关的,我主要关心在x86_64硬件上运行的Linux上使用GCC编译的程序。

Windows相当于ulimit -n

什么是Unix命令“ulimit -n”的Windows等价物? 基本上,我想通过命令提示符设置最大限额。