我需要限制进程的内存使用,但忽略它的所有子进程。我怎么做?首选使用 cgroup,但不是必需的。
注意:我想忽略所有当前和未来进程的子进程。我知道它可以逃脱限制,但这就是我所需要的。
答案1
就我而言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=$$