在 CentOS 系统中,ulimit 命令用于控制 shell 进程及其子进程的资源限制。如果你想调整内存限制,可以通过以下几种方法来实现:
ulimit 命令临时设置你可以在 shell 会话中使用 ulimit 命令来临时设置内存限制。例如,要设置单个进程的最大虚拟内存为 512MB,可以使用:
ulimit -v 524288
请注意,这种设置只在当前 shell 会话中有效,关闭终端或重新登录后设置将失效。
/etc/security/limits.conf 中永久设置如果你想让内存限制在系统重启后依然生效,可以编辑 /etc/security/limits.conf 文件。使用 root 权限打开文件:
sudo vi /etc/security/limits.conf
在文件末尾添加如下行:
* soft as unlimited
* hard as unlimited
这里的 as 是指 address space(虚拟内存)。你可以将 unlimited 替换为具体的数值,例如 512M 或 536870912(512MB 的字节表示)。
保存并退出编辑器后,新的限制将在下次用户登录时生效。
cgroups 进行更细粒度的控制对于更复杂的场景,比如对特定进程组设置内存限制,可以使用 cgroups(control groups)。以下是一个简单的步骤:
安装 cgroup-tools(如果尚未安装):
sudo yum install cgroup-tools
创建一个新的 cgroup:
sudo cgcreate -g memory:/mygroup
设置内存限制(例如,设置为 512MB):
echo 536870912 | sudo tee /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
将进程添加到 cgroup 中。假设你的进程 PID 是 1234:
sudo cgclassify -g memory:/mygroup 1234
使用 cgroups 可以对系统资源进行更精细的管理和控制,适合用于容器化环境或服务部署中。
选择合适的方法来设置内存限制,取决于你的具体需求和使用场景。