Как я могу ограничить использование оперативной памяти для конкретного пользователя или процесса?

8535
guerda

Я использую фоновый сервис, который время от времени теряет память. Чтобы не использовать Alt+ SysRq REISUB[ 1 ], я бы хотел ограничить использование оперативной памяти для одного процесса или системного пользователя.

Я действительно хотел бы сказать: пользователь x может использовать максимальный объем оперативной памяти в 1 ГБ.

Это возможно? Нужна ли виртуальная машина для этого? Я использую Ubuntu 9.10.

8

2 ответа на вопрос

10
basszero

ulimit твой друг. Проверьте флаг -m. Я думаю, что вы установили это до того, как запустите свой процесс, и с тех пор он применяется (в текущей оболочке).

Thanks, nice hint! As I understand ulimit, it limits _all_ users memory/process/whatever consumption. I just like to limit it to one user/process & subprocesses. guerda 14 лет назад 0
ulimit является командой оболочки и влияет только на процессы, запущенные из той же оболочки после выполнения ulimit. Вы запускаете процесс в сценарии оболочки с помощью команды ulimit, чтобы он влиял только на этот процесс. KeithB 14 лет назад 1
4
KeithB

В дополнение к командам оболочки ulimit(для bash) или limit(для csh) вы можете управлять этим изнутри своего кода с помощью ulimit()функции.

Обязательные страницы управления: http://linux.die.net/man/1/ulimit (команда оболочки) и http://linux.die.net/man/3/ulimit (функция C). Stephan202 14 лет назад 1