![如何限制每个进程的可用虚拟内存](https://linux22.com/image/20244/%E5%A6%82%E4%BD%95%E9%99%90%E5%88%B6%E6%AF%8F%E4%B8%AA%E8%BF%9B%E7%A8%8B%E7%9A%84%E5%8F%AF%E7%94%A8%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98.png)
有时,我的 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
祝你好运