У меня есть система ubuntu, и у меня есть скрипт, который запускается регулярно. Мне нужно ограничить максимальный объем памяти, который может использовать этот сценарий. Насколько мне известно ulimit
это команда для этого, но я не могу заставить ее работать.
Например, у меня есть следующий сценарий:
#! /bin/bash
ulimit -m 1024
X="x"
seq 100 | while read LINE ; do
X="$X$X"
done
Это должно сделать $X
расти в размерах, и этот пример - именно то, что я хочу ограничить. Однако вызов ulimit, похоже, не работает. Я могу запустить сценарий нормально, и он не умирает, и top
показывает мне, что у сценария много памяти. Что я делаю не так? Как я могу заставить этот скрипт никогда не использовать больше определенного объема памяти?
Я смог заставить скрипт выйти из строя с помощью -v
вариант:
#!/bin/bash
ulimit -v 100000
for i in {1..10000000}
do
x="x"$x
done
На странице руководства Bash говорится:
-m The maximum resident set size (many systems do not honor this limit)
Попробуйте ограничить виртуальную память:
ulimit -v 1024