有时,我的 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
祝你好运