Использование ulimit для ограничения объема памяти, который может использовать скрипт

Использование ulimit для ограничения объема памяти, который может использовать скрипт

У меня система Ubuntu и у меня есть скрипт, который запускается регулярно. Мне нужно ограничить максимальный объем памяти, который может использовать этот скрипт. Насколько мне известно, ulimitэто команда для этого, но я не могу заставить ее работать.

Например, у меня есть следующий скрипт:

#! /bin/bash

ulimit -m 1024

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

Это должно $Xувеличиться в размере, и этот пример — как раз то, что я хочу ограничить. Однако вызов ulimit, похоже, не работает. Я могу запустить скрипт нормально, и он не умирает, и topпоказывает мне, что скрипт получает много памяти. Что я делаю не так? Как заставить этот скрипт никогда не использовать больше определенного объема памяти?

решение1

Мне удалось заставить скрипт выдать ошибку с помощью -vопции:

#!/bin/bash

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

На странице руководства Bash говорится:

-m Максимальный размер резидентного набора (многие системы не учитывают
              этот предел)

решение2

Попробуйте ограничить виртуальную память:

ulimit -v 1024 

Связанный контент