Linux
使用 ulimit 限制腳本可以使用的記憶體量
我有一個 ubuntu 系統,我有一個定期執行的腳本。我需要限制此腳本可以使用的最大記憶體量。AFAIK
ulimit
是執行此操作的命令,但是我無法使其正常工作。例如,我有以下腳本:
#! /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