在Linux中限制程序的内存使用

我是Linux和Terminal(或者它使用的任何types的命令提示符)的新手,我想控制一个进程可以使用的RAM数量。 我已经找了几个小时find一个易于使用的指南。 我有一些限制它的要求:

  1. 该程序的多个实例将运行,但我只想限制一些实例。
  2. 一旦超过限制,我不希望进程崩溃。 我希望它使用硬盘页面交换。
  3. 该程序将在WINE下运行,并且是一个.exe。

那么是否有人可以帮助使用该命令来限制Linux中进程的内存使用率?

您使用Wine的事实在这个特定的上下文中没有任何区别,这留下了需求1和2.需求2 –

一旦超过限制,我不希望进程崩溃。 我希望它使用硬盘页面交换。

– 被称为限制进程的驻留集合大小rss ,在Linux上实际上是非常平凡的,正如2010年提出的一个问题所表明的那样。 您需要设置Linux控制组(cgroups) 。 幸运的是, Justin L.的回答给出了如何这样做的简要说明。 注意

  • 而不是jlebar ,你应该使用你自己的Unix用户名和
  • 而不是your/program ,你应该使用wine /path/to/Windows/program.exe

使用cgroups也将满足你的其他需求 – 你可以根据需要启动许多程序实例,但是只有那些以cgexec -g memory:limited开头的程序才会受到限制。