如何在 Ubuntu 上限制用户的 RAM?

如何在 Ubuntu 上限制用户的 RAM?

我目前有一个“朋友”在我运行 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

正如我所说,这是不优雅的,而且只是一个丑陋的黑客,但这可能就足够了。

相关内容