如何限制每个进程的可用虚拟内存

如何限制每个进程的可用虚拟内存

有时,我的 GNU/Linux 桌面上的某些进程(例如 gv 和 gnash)会耗尽物理内存并导致系统抖动。由于这些进程并不重要,因此我希望它们在使用过多内存时被自动终止。

我认为 /etc/security/limits.conf 文件和 -v 选项可以用于此目的。问题是它是否限制特定用户的每个进程的可用内存量,或者用户的所有进程的总和。另外我想问如何在不重新启动的情况下使该文件生效。

答案1

还有ulimit机制。有一个系统调用(在 Linux 中,它是一个 C 库函数)ulimit(3)和一个 Bash 内置ulimit.键入ulimit -a以查看您可以限制的所有内容。看当前的虚拟内存限制再说ulimit -v。您可以通过说来设置它ulimit -v INTEGER-KILOBYTES

跑步ulimit会改变你的一切当前的shell 中,只能选择比当前值小的值。要使用有限的虚拟内存运行命令,您可以使用 Bash 子 shell:

( ulimit -v 131072; some-app )

答案2

limit.conf 将适用于用户示例:oracle soft memlock 3145728 oracle hard memlock 3145728

否则,如果您正在寻找每个进程的限制..请查看 sysctl -a 以获得永久效果..您可以将参数添加到 sysctl.conf

祝你好运

相关内容