Sly-Little-Fox Asked: 2021-10-03 00:30:03 +0800 CST2021-10-03 00:30:03 +0800 CST 2021-10-03 00:30:03 +0800 CST 使用 cgroups 限制没有子进程的单个进程的内存 772 我需要限制进程的内存使用,但忽略它的所有子进程。我怎么做?使用 cgroups 是首选,但不是必需的。 注意:我想忽略该过程的所有当前和未来的子进程。我知道它可以逃脱限制,但这就是我所需要的。 linux cgroups 1 个回答 Voted Best Answer Sly-Little-Fox 2021-10-03T01:35:59+08:002021-10-03T01:35:59+08:00 在我的情况下prlimit --as=<virtual memory in bytes>帮助。它并不总是能正常工作(因为虚拟内存很棘手),所以请谨慎使用。您可能还想设置一个软限制,而不是prlimit --as=<limit>: 例子: 启动一个虚拟内存限制为 2 GB(软限制和硬限制)的进程 prlimit --as=2147483648 -- process --with args 启动一个虚拟内存限制为 2 GB 的进程(仅软限制) prlimit --as=2147483648: -- process --with args 启动一个虚拟内存限制为 2 GB 的进程(仅硬限制) prlimit --as=:2147483648 -- process --with args 将现有进程限制为 2 GB 的虚拟内存 prlimit --as=2147483648 --pid=<process pid> 将当前 shell 限制为 2 GB 的虚拟内存 prlimit --as=2147483648 --pid=$$
在我的情况下
prlimit --as=<virtual memory in bytes>
帮助。它并不总是能正常工作(因为虚拟内存很棘手),所以请谨慎使用。您可能还想设置一个软限制,而不是prlimit --as=<limit>:
例子:
启动一个虚拟内存限制为 2 GB(软限制和硬限制)的进程
启动一个虚拟内存限制为 2 GB 的进程(仅软限制)
启动一个虚拟内存限制为 2 GB 的进程(仅硬限制)
将现有进程限制为 2 GB 的虚拟内存
将当前 shell 限制为 2 GB 的虚拟内存