使用 ulimit 限制腳本可以使用的記憶體量

使用 ulimit 限制腳本可以使用的記憶體量

我有一個ubuntu系統,並且有一個定期運行的腳本。我需要限制該腳本可以使用的最大內存量。 AFAIKulimit是執行此操作的命令,但我無法讓它工作。

例如我有以下腳本:

#! /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 

相關內容