【问题标题】:how does "ulimit -v" work in the Linux OS?“ulimit -v”如何在 Linux 操作系统中工作?
【发布时间】:2012-10-18 00:53:31
【问题描述】:

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

【问题讨论】:

标签: linux bash ulimit


【解决方案1】:

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

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

cgroups 是 Linux 特定的,在 Linux 安装中甚至不需要。我不确定是否可以使用 cgroups 管理限制,但这样做肯定是不标准的。

【讨论】:

  • 我不会调用setrlimit(2)一个方法,它是一个系统调用。
【解决方案2】:

“ulimit”基本上是不合时宜的。如果您需要资源,您不应该有任何开箱即用的实际限制,如果您想限制资源,有更好的方法来建立报价。

这是一个很好的概述:

需要查看的几个手册页包括:

【讨论】:

  • 但是ulimit 也是一个 bash 内置函数(调用 setrlimit syscall),我知道原发帖人说的是 bash 内置函数。
  • 谢谢。 Basile 是对的,我指的是“ulimit -v” bash 命令。该命令是否已过时或通过调用 setrlimit 仍然有效?
【解决方案3】:

我使用 softlimit,它是 DJB 的 daemontools 软件包的一部分。

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

【讨论】:

    猜你喜欢
    • 2010-11-18
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 2018-03-28
    • 2013-02-12
    • 2010-11-17
    • 1970-01-01
    • 2015-01-06
    相关资源
    最近更新 更多