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

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

Я действительно хотел бы сказать: Пользователь x может использовать максимальную сумму RAM 1 ГБ.

Действительно ли это выполнимо? Мне нужен вид виртуальной машины для этого? Я использую Ubuntu 9.10.

8
задан 22.08.2011, 20:58

2 ответа

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

10
ответ дан 07.12.2019, 13:56
  • 1
    Спасибо, хорошая подсказка! Поскольку я не был понят ulimit, он все пользователи memory/process/whatever потребление. Я точно так же, как для ограничения его одним пользователем/процессом и подпроцессами. – guerda 05.11.2009, 23:52
  • 2
    ulimit является командой оболочки и только влияет на процессы, запущенные с той же оболочки после того, как ulimit будет выполняться. Вы запускаете процесс в сценарии оболочки с командой ulimit, чтобы иметь его влияние просто тот процесс. – KeithB 06.11.2009, 03:52

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

4
ответ дан 07.12.2019, 13:56

Теги

Похожие вопросы