![如何在 Ubuntu 上限制用户的 RAM?](https://linux22.com/image/52848/%E5%A6%82%E4%BD%95%E5%9C%A8%20Ubuntu%20%E4%B8%8A%E9%99%90%E5%88%B6%E7%94%A8%E6%88%B7%E7%9A%84%20RAM%EF%BC%9F%20.png)
我目前有一个“朋友”在我运行 Ubuntu 的专用服务器上有一个帐户。没有透露具体细节,但他说他最多将使用约 2GB,而他正在使用约 10GB。继续回答问题。有没有办法限制他的帐户最大容量为.. 3GB?杀死进程也可以。
我已经做了一些谷歌搜索,但仍然没有找到解决方案:/
答案1
几乎可以肯定有一种更好的方法可以做到这一点,可能是通过limits.conf
但我不知道,所以这是一个肮脏的黑客。
此命令将终止用户拥有的所有使用terdon
超过 3G RAM 的进程:
ps -u terdon -o vsize= -o pid= |
while read mem pid; do [ $mem -gt 3145728 ] && kill $pid;
done
该ps -u terdon -o vsize= -o pid=
命令将打印 所拥有的每个进程所使用的 PID 和内存(1024 字节单位)terdon
。显然,您应该对此进行调整以使用您朋友的用户名。然后,命令的输出ps
通过 while 循环传递,该循环读取内存使用情况和 pid,如果 PID 使用的内存超过 3145728K,则终止 PID。
如果您现在将其添加为由 root 运行的 crontab,它将每分钟运行一次,并杀死那些使用超出您允许的 RAM 的进程。因此,将此行添加到/etc/crontab
:
* * * * * root ps -u terdon -o vsize= -o pid= | while read mem pid; do [ $mem -gt 3145728 ] && kill $pid; done
正如我所说,这是不优雅的,而且只是一个丑陋的黑客,但这可能就足够了。