Consegui fazer com que o script falhasse com a opção -v
:
#!/bin/bash
ulimit -v 100000
for i in {1..10000000}
do
x="x"$x
done
A página man do Bash diz:
-m The maximum resident set size (many systems do not honor this limit)
Eu tenho um sistema Ubuntu e tenho um script que roda regularmente. Eu preciso limitar a quantidade máxima de memória que esse script pode usar. AFAIK ulimit
é o comando para fazer isso, mas não consigo fazer isso funcionar.
Por exemplo, eu tenho o seguinte script:
#! /bin/bash
ulimit -m 1024
X="x"
seq 100 | while read LINE ; do
X="$X$X"
done
Isso deve fazer com que $X
cresça em tamanho, e esse exemplo é exatamente o tipo de coisa que quero limitar. No entanto, a chamada ulimit não parece funcionar. Eu posso executar o script OK, e ele não morre, e top
me mostra que o script recebe muita memória. O que estou fazendo de errado? Como posso forçar esse script a nunca usar mais do que uma certa quantidade de memória?
Tente limitar a memória virtual:
ulimit -v 1024