“ulimit -v”如何在Linux操作系统中工作?

我想通过在Linux上使用ulimit命令来限制由bash启动的进程使用的内存。 我想知道什么操作系统机制是用来支持ulimit。 特别是,它是基于cgroups吗?

获取和设置限制的Linux API方法是getrlimit(2)和setrlimit(2)

限制在流程空间内进行管理。 子进程将继承其父进程的限制。 限制是POSIX标准的一部分,所有符合POSIX标准的操作系统都支持它们(Linux,BSD,OSX)。

cgroups是Linux特有的,在Linux安装中甚至不需要。 我不确定是否可以用cgroups来管理限制,但肯定会是非标准的。

“ulimit”基本上是一个时代错误。 如果您需要资源,您不应该有任何实际的限制,如果您想限制资源,有更好的方法来建立报价。

这里有一个很好的概述:

看几个手册页包括:

  • 男人2 getrlimit

  • 男人2 setrlimit

  • 男人3 ulimit OBSOLETE!

我使用softlimit ,这是DJB的daemontools包的一部分。

例如,通过指定类似softlimit -m 1048576 nautilus的程序(nautilus)永远不会超过1MiB的内存使用量(这也会导致它在此情况下立即失败)。