linux

如何用ulimit限制进程的内存使用

小樊
42
2025-09-17 10:07:40
栏目: 编程语言

ulimit 是一个用于控制 shell 进程资源使用的命令行工具。你可以使用 ulimit 来限制进程的内存使用。以下是如何使用 ulimit 限制内存使用的步骤:

  1. 打开终端。

  2. 输入 ulimit -v <memory_limit>,其中 <memory_limit> 是你想要设置的内存限制,单位是千字节(KB)。例如,如果你想要限制内存使用为 512MB,你可以输入 ulimit -v 524288

  3. 按 Enter 键执行命令。

现在,你的 shell 进程及其子进程的内存使用将被限制在指定的内存限制内。

请注意,这种方法只适用于通过该 shell 启动的进程。如果你想要永久地更改内存限制,你需要将 ulimit 命令添加到用户的 shell 配置文件中(例如 ~/.bashrc~/.bash_profile),或者将其添加到系统的全局配置文件中(例如 /etc/security/limits.conf)。

另外,如果你想要限制单个进程的内存使用,你可以使用 cgroups(控制组)功能。cgroups 是 Linux 内核的一个功能,可以用来限制、记录和隔离进程组的资源使用。要使用 cgroups 限制内存,请参考以下步骤:

  1. 安装 cgroup-tools(如果尚未安装):

    对于基于 Debian 的系统(如 Ubuntu),使用以下命令:

    sudo apt-get install cgroup-tools
    

    对于基于 RHEL 的系统(如 CentOS),使用以下命令:

    sudo yum install libcgroup-tools
    
  2. 创建一个新的 cgroup,例如名为 memory_limit 的 cgroup,并设置内存限制:

    sudo cgcreate -g memory:/memory_limit
    sudo cgset -r memory.limit_in_bytes=536870912 memory_limit
    

    这将创建一个名为 memory_limit 的 cgroup,并将其内存限制设置为 512MB(536870912 字节)。

  3. 将进程添加到 cgroup:

    sudo cgclassify -g memory:/memory_limit <pid>
    

    其中 <pid> 是你想要限制内存使用的进程的进程 ID。

现在,该进程的内存使用将被限制在指定的内存限制内。要删除 cgroup,可以使用 sudo cgdelete -g memory:/memory_limit 命令。

0
看了该问题的人还看了