Ich habe ein Ubuntu-System und ein Skript, das regelmäßig ausgeführt wird. Ich muss die maximale Speichermenge begrenzen, die dieses Skript verwenden kann. Soweit ich weiß, ulimit
gibt es dafür einen Befehl, aber ich bekomme ihn nicht zum Laufen.
Ich habe beispielsweise folgendes Skript:
#! /bin/bash
ulimit -m 1024
X="x"
seq 100 | while read LINE ; do
X="$X$X"
done
Dies sollte $X
die Größe erhöhen, und dieses Beispiel ist genau die Art von Dingen, die ich begrenzen möchte. Der ulimit-Aufruf scheint jedoch nicht zu funktionieren. Ich kann das Skript ordnungsgemäß ausführen, es stürzt nicht ab und top
zeigt mir an, dass das Skript viel Speicher erhält. Was mache ich falsch? Wie kann ich dieses Skript zwingen, nie mehr als eine bestimmte Speichermenge zu verwenden?
Antwort1
Ich konnte das Skript mit der -v
folgenden Option zum Fehlerausgeben bringen:
#!/bin/bash
ulimit -v 100000
for i in {1..10000000}
do
x="x"$x
done
Auf der Bash-Manpage steht:
-m Die maximale Resident Set-Größe (viele Systeme berücksichtigen dies nicht) diese Grenze)
Antwort2
Versuchen Sie, den virtuellen Speicher zu begrenzen:
ulimit -v 1024