使用 ulimit 限制脚本可以使用的内存量

使用 ulimit 限制脚本可以使用的内存量

我有一个 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 

相关内容