5

I have an ubuntu system and I have a script that runs regularly. I need to limit the maximum amount of memory that this script can use. AFAIK ulimit is the command to do this, however I can't get it to work.

For example I have the following script:

#! /bin/bash

ulimit -m 1024

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

This should make $X grow in size, and this example is just the kind of thing I want to limit. However the ulimit call doesn't seem to work. I can run the script OK, and it doesn't die, and top shows me that the script gets lots of memory. What am I doing wrong? How can I force this script to never user more than a certain amount of memory?

Amandasaurus
  • 31,471
  • 65
  • 192
  • 253

2 Answers2

5

I was able to get the script to error out with the -v option:

#!/bin/bash

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

The Bash man page says:

-m            The  maximum resident set size (many systems do not honor
              this limit)
Dennis Williamson
  • 62,149
  • 16
  • 116
  • 151
1

Try to limit virtual memory:

ulimit -v 1024 
vitalie
  • 502
  • 2
  • 5