我有一个 ubuntu 系统,并且有一个定期运行的脚本。我需要限制此脚本可以使用的最大内存量。据我所知,这ulimit
是执行此操作的命令,但我无法让它工作。
例如我有以下脚本:
#! /bin/bash
ulimit -m 1024
X="x"
seq 100 | while read LINE ; do
X="$X$X"
done
这应该会使$X
大小增加,这个例子正是我想要限制的那种东西。但是 ulimit 调用似乎不起作用。我可以正常运行脚本,它不会死机,并top
显示脚本占用大量内存。我做错了什么?我如何强制此脚本永远不会使用超过一定数量的内存?
答案1
我能够通过以下-v
选项让脚本出错:
#!/bin/bash
ulimit -v 100000
for i in {1..10000000}
do
x="x"$x
done
Bash 手册页说:
-m 最大驻留集大小(许多系统不遵守 此限制)
答案2
尝试限制虚拟内存:
ulimit -v 1024