nohup
命令本身并不提供直接限制進程資源使用的功能。它的主要作用是在用戶退出登錄后繼續運行指定的命令或腳本。如果你想要限制進程的資源使用,可以使用 cgroups
(控制組)或者 ulimit
命令。
以下是使用這兩種方法限制進程資源使用的簡要說明:
使用 cgroups
限制資源使用:
cgroups
是 Linux 系統中用于限制、監控和分配進程組所使用的物理資源(如 CPU、內存等)的機制。要使用 cgroups
限制進程資源,請按照以下步驟操作:
a. 安裝 cgroup-tools
(如果尚未安裝):
對于基于 Debian 的系統(如 Ubuntu),請運行:
sudo apt-get install cgroup-tools
對于基于 RHEL 的系統(如 CentOS),請運行:
sudo yum install libcgroup-tools
b. 創建一個新的 cgroup:
sudo cgcreate -g memory,cpu:/my_cgroup
c. 為新創建的 cgroup 設置資源限制:
例如,要將內存限制為 200MB,CPU 使用率限制為 50%,請運行:
echo 200M | sudo tee /sys/fs/cgroup/memory/my_cgroup/memory.limit_in_bytes
echo 50000 | sudo tee /sys/fs/cgroup/cpu/my_cgroup/cpu.cfs_quota_us
echo 100000 | sudo tee /sys/fs/cgroup/cpu/my_cgroup/cpu.cfs_period_us
d. 將進程添加到 cgroup 中:
首先,找到要限制資源的進程的 PID,然后運行:
sudo cgclassify -g memory,cpu:my_cgroup <PID>
使用 ulimit
限制資源使用:
ulimit
命令允許你設置用戶級別的資源限制。這些限制適用于當前 shell 會話及其派生的所有子進程。要使用 ulimit
限制進程資源,請按照以下步驟操作:
a. 查看當前的資源限制:
ulimit -a
b. 設置資源限制:
例如,要將最大內存使用量限制為 200MB,CPU 時間限制為 60 秒,請運行:
ulimit -v 209715200
ulimit -t 60
c. 在腳本中使用 ulimit
:
在你的 shell 腳本中,可以在需要限制資源的命令之前添加 ulimit
命令。
請注意,ulimit
只能在當前 shell 會話中限制資源使用,而 cgroups
可以在系統范圍內更精細地控制資源分配。根據你的需求選擇合適的方法。