Usando ulimit para limitar a quantidade de memória que um script pode usar

5

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?

    
por Rory 25.01.2010 / 11:49

2 respostas

5

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)
    
por 25.01.2010 / 12:53
1

Tente limitar a memória virtual:

ulimit -v 1024 
    
por 27.07.2010 / 09:37