Usar ulimit para limitar la cantidad de memoria que puede usar un script

Usar ulimit para limitar la cantidad de memoria que puede usar un script

Tengo un sistema ubuntu y tengo un script que se ejecuta con regularidad. Necesito limitar la cantidad máxima de memoria que puede usar este script. AFAIK ulimites el comando para hacer esto, sin embargo, no puedo hacerlo funcionar.

Por ejemplo tengo el siguiente script:

#! /bin/bash

ulimit -m 1024

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

Esto debería hacer que $Xcrezca en tamaño, y este ejemplo es justo el tipo de cosas que quiero limitar. Sin embargo, la llamada ulimit no parece funcionar. Puedo ejecutar el script correctamente, no muere y topme muestra que el script tiene mucha memoria. ¿Qué estoy haciendo mal? ¿Cómo puedo forzar que este script nunca use más de una cierta cantidad de memoria?

Respuesta1

Pude hacer que el script fallara con la -vopción:

#!/bin/bash

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

La página de manual de Bash dice:

-m El tamaño máximo del conjunto residente (muchos sistemas no respetan
              este límite)

Respuesta2

Intente limitar la memoria virtual:

ulimit -v 1024 

información relacionada