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 ulimit
es 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 $X
crezca 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 top
me 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 -v
opció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