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