Linux

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

  • July 27, 2010

我有一個 ubuntu 系統,我有一個定期執行的腳本。我需要限制此腳本可以使用的最大記憶體量。AFAIKulimit是執行此操作的命令,但是我無法使其正常工作。

例如,我有以下腳本:

#! /bin/bash

ulimit -m 1024

X="x"
seq 100 | while read LINE ; do
   X="$X$X"
done

這應該會$X擴大規模,而這個例子正是我想要限制的那種事情。但是 ulimit 呼叫似乎不起作用。我可以正常執行腳本,它不會死,並且top告訴我腳本有很多記憶體。我究竟做錯了什麼?如何強制此腳本永遠不會使用超過一定數量的記憶體?

我能夠使用以下-v選項使腳本出錯:

#!/bin/bash

ulimit -v 100000
for i in {1..10000000}
do
   x="x"$x
done

Bash 手冊頁說:

-m 最大駐留集大小(許多系統不支持
這個限制)

嘗試限制虛擬記憶體:

ulimit -v 1024 

引用自:https://serverfault.com/questions/106001