linux - 限制Linux中程序的内存使用

标签 linux memory limit ulimit setrlimit

我是 Linux 和终端(或它使用的任何类型的命令提示符)的新手,我想控制进程可以使用的 RAM 量。我已经花了几个小时才找到一本易于使用的指南。我有一些限制它的要求:

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

有人可以帮忙使用命令来限制 Linux 中进程的 RAM 使用吗?

最佳答案

事实上,您使用 Wine 在此特定环境中没有任何区别,因此只剩下要求 1 和 2。要求 2 –

I do not want the process to crash once it exceeds the limit. I want it to use HDD page swap.

– 被称为限制进程的驻留集大小rss,实际上在Linux上执行此操作相当重要,如a question asked in 2010所示。您需要设置Linux control groups (cgroups) 。幸运的是,Justin L.’s answer简要介绍了如何执行此操作。请注意

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

使用 cgroup 还可以满足您的其他要求 - 您可以根据需要启动任意数量的程序实例,但只有那些使用 cgexec -g memory:limited 启动的实例才会受到限制。

关于linux - 限制Linux中程序的内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17460083/

相关文章:

python - 你能用 Python 在 MS Windows 上将标准输入作为文件打开吗?

c - 在 Linux 内核模块中按位取 __be32 类型

c++ - 用户输入可以超过数组的大小,但最终会崩溃,为什么?

mysql - 使用 ORDER BY 和 LIMIT 时查询速度很慢?

java - Java 中的过滤、排序和限制不可修改列表

linux - 如何通过动态使用 shell 脚本在直线中创建一堆数据库?

c++ - GLFW undefined reference 很多东西

debugging - 如何可视化 AVR 程序的内存 (SRAM) 使用情况?

java - PDF 的高效 SVG 渲染(Java、Batik、Flying Saucer)

string - Perl:现实生活中的字符串长度限制