2013-07-04 7 views
2

Я новичок в Linux и терминале (или в любом другом приглашении командной строки), и я хочу контролировать объем оперативной памяти, которую может использовать процесс. Я уже много часов искал, чтобы найти руководство по удобному использованию. У меня есть несколько требований по его ограничению:Ограничение использования памяти в Linux

  1. Несколько экземпляров программы будут работать, но я хочу ограничить некоторые экземпляры.
  2. Я не хочу, чтобы процесс выходил из строя, когда он превысил лимит. Я хочу, чтобы он использовал обмен файлами на HDD.
  3. Программа будет работать под управлением WINE и является EXE.

Может ли кто-нибудь помочь с помощью команды ограничить использование ОЗУ в процессе в Linux?

+0

См. Следующее: http://unix.stackexchange.com/questions/44985/limit-memory-usage-for-a-single-linux-process – MiJyn

+0

Я уже много раз смотрел на этот источник, и это не так полезно, поскольку он не дает полного кода после «$ pdftoppm». – hammereditor

ответ

2

Тот факт, что вы используете вино не имеет никакого значения в данном конкретном контексте, который оставляет требованиям 1 и 2. Требование 2 -

я не хочу, чтобы процесс аварии, когда он превышает предел. Я хочу, чтобы он использовал обмен файлами на HDD.

- известен как ограничение установленного размера -резидентов или RSS процесса, и это на самом деле довольно нетривиально сделать на Linux, как это показано на a question asked in 2010. Вам нужно будет установить Linux control groups (cgroups). К счастью, Justin L.’s answer дает краткое изложение о том, как это сделать. Обратите внимание, что

  • вместо jlebar, вы должны использовать свой собственный Unix имя пользователя и
  • вместо your/program, вы должны использовать wine /path/to/Windows/program.exe.

Используя контрольные группы также будут удовлетворять ваши другие требования - вы можете начать, как много экземпляров программы, как вы хотите, но только те, которые вы начинаете с cgexec -g memory:limited будут ограничены.

Смежные вопросы