在 CentOS 系統中,ulimit
命令可以用來設置或查看用戶進程的資源限制。要限制內存使用率,可以使用 ulimit
命令的 -v
選項來設置虛擬內存(包括物理內存和交換空間)的最大使用量。
以下是如何使用 ulimit
命令來限制內存使用率的步驟:
查看當前的內存限制:
ulimit -v
設置內存限制: 假設你想將內存限制設置為 2GB,可以使用以下命令:
ulimit -v 2147483648
這里的 2147483648
是 2GB 的字節表示。
永久設置內存限制:
ulimit
命令設置的限制在當前 shell 會話結束后會失效。要永久設置內存限制,可以編輯 /etc/security/limits.conf
文件。
打開文件:
sudo vi /etc/security/limits.conf
在文件末尾添加以下行:
* soft as unlimited
* hard as unlimited
這里的 *
表示所有用戶,soft
是軟限制,hard
是硬限制。你可以根據需要修改這些值。
重啟系統:
修改 /etc/security/limits.conf
文件后,需要重啟系統以使更改生效。
驗證設置:
重啟系統后,再次使用 ulimit -v
命令來驗證內存限制是否已正確設置。
請注意,ulimit
命令的限制是針對單個進程的,而不是整個系統。如果你需要限制整個系統的內存使用,可能需要使用其他工具或方法,例如 cgroups(控制組)。
cgroups 是 Linux 內核提供的一種機制,可以用來限制、記錄和隔離進程組的資源使用(CPU、內存、磁盤 I/O 等)。以下是使用 cgroups 限制內存的基本步驟:
安裝 cgroup 工具:
sudo yum install libcgroup-tools
創建一個新的 cgroup:
sudo cgcreate -g memory:/mygroup
設置內存限制: 假設你想將內存限制設置為 2GB,可以使用以下命令:
echo 2147483648 | sudo tee /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
將進程添加到 cgroup:
假設你想將進程 PID 為 1234 的進程添加到 mygroup
cgroup,可以使用以下命令:
sudo echo 1234 | sudo tee /sys/fs/cgroup/memory/mygroup/tasks
通過這些步驟,你可以使用 cgroups 來限制特定進程或進程組的內存使用。