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 $X
aumentar 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 top
me 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 -v
opçã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