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

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

Eu tenho um sistema Ubuntu e um script que roda regularmente. Preciso limitar a quantidade máxima de memória que este script pode usar. AFAIK ulimité o comando para fazer isso, mas não consigo fazê-lo funcionar.

Por exemplo tenho o seguinte script:

#! /bin/bash

ulimit -m 1024

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

Isso deve $Xaumentar de tamanho, e este exemplo é exatamente o tipo de coisa que quero limitar. No entanto, a chamada ulimit parece não funcionar. Posso executar o script OK, ele não morre e topme mostra que o script ocupa 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?

Responder1

Consegui fazer com que o script apresentasse erro com a -vopção:

#!/bin/bash

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

A página de manual do Bash diz:

-m O tamanho máximo do conjunto de residentes (muitos sistemas não respeitam
              esse limite)

Responder2

Tente limitar a memória virtual:

ulimit -v 1024 

informação relacionada