Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

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?

share|improve this question

2 Answers 2

up vote 4 down vote accepted

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)
share|improve this answer

Try to limit virtual memory:

ulimit -v 1024 
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.