在 Linux 中限制用户可用的内存和 CPU
Posted
技术标签:
【中文标题】在 Linux 中限制用户可用的内存和 CPU【英文标题】:Limit the memory and cpu available for a user in Linux 【发布时间】:2010-10-01 01:08:36 【问题描述】:我有点担心我可以在共享机器中使用的资源量。有什么方法可以测试管理员对我可以使用的资源数量是否有限制?如果是这样,为了提出一个更完整的问题,我该如何设置这样的限制?
【问题讨论】:
【参考方案1】:对于进程相关的限制,您可以查看/etc/security/limits.conf
(阅读文件中的 cmets,使用 google 或使用 man limits.conf
了解更多信息)。正如 jpalecek 指出的那样,您可以使用 ulimit -a
查看(并可能修改)当前有效的所有此类限制。
您可以使用命令quota
来查看磁盘配额是否生效。
【讨论】:
所有输入都有注释,是不是没有限制? 最有可能,至少在 CPU 和内存使用方面。对于磁盘使用情况,我认为您需要使用配额命令进行检查【参考方案2】:你可以试试跑
ulimit -a
查看有效的资源限制。此外,如果允许您更改此类限制,您可以通过ulimit
命令更改它们,例如。
ulimit -c unlimited
取消对进程可以创建的核心文件大小的任何限制。
【讨论】:
我意识到这个问题已有 3 年历史,但手册页将此程序列为已过时(说使用getrlimit
代替)
ulimit() C 库函数是(见ulimit(3)),内置shell 不是(见bash(1))。【参考方案3】:
在C层,相关函数(实际上是syscalls(2)...)可以是setrlimit(2)和setpriority(2)和sched_setattr(2)。您可能希望从您的 shell 中调用它们。
另请参阅proc(5) - 并尝试cat /proc/self/limits
和sched(7)。
您可能想要使用renice(1) 命令。
如果您运行不需要用户交互的长时间程序(几个小时),您可以考虑使用一些batch processing。一些 Linux 系统有一个batch
or at
command。
【讨论】:
以上是关于在 Linux 中限制用户可用的内存和 CPU的主要内容,如果未能解决你的问题,请参考以下文章