nohup 命令本身并不提供直接限制進程資源使用的功能。它的主要作用是讓進程忽略掛起(SIGHUP)信號,從而在用戶退出登錄后繼續運行
-
使用 ulimit 命令限制資源:
在啟動進程之前,可以使用 ulimit 命令來限制進程的資源使用。例如,要限制進程的最大CPU時間、內存使用和文件大小,可以執行以下命令:
ulimit -t 3600 # 限制CPU時間為3600秒 ulimit -v 524288 # 限制內存使用為512MB ulimit -f 1048576 # 限制文件大小為1GB
然后,使用 nohup 命令啟動進程:
nohup your_command &
-
使用 cgroups 限制資源:
cgroups(control groups)是Linux內核的一個功能,可以用來限制、監控和分配進程組的資源使用。要使用 cgroups 限制進程資源,請按照以下步驟操作:
a. 安裝 cgroup-tools(如果尚未安裝):
sudo apt-get install cgroup-tools # 對于基于Debian的系統 sudo yum install libcgroup-tools # 對于基于RHEL的系統
b. 創建一個新的cgroup:
sudo cgcreate -g cpu,memory:/your_cgroup_name
c. 為新創建的cgroup設置資源限制:
echo "3600" | sudo tee /sys/fs/cgroup/cpu/your_cgroup_name/cpu.cfs_quota_us echo "1048576" | sudo tee /sys/fs/cgroup/memory/your_cgroup_name/memory.limit_in_bytes
這里,我們將CPU時間限制為3600秒,將內存限制為1GB。
d. 將進程添加到cgroup:
echo $! | sudo tee /sys/fs/cgroup/cpu/your_cgroup_name/tasks echo $! | sudo tee /sys/fs/cgroup/memory/your_cgroup_name/tasks
這里,$! 是剛剛啟動的進程的進程ID。
e. 使用 nohup 命令啟動進程:
nohup your_command &
這樣,進程將在cgroup的限制下運行。
請注意,這些方法可能需要root權限。如果你沒有足夠的權限,請聯系系統管理員以獲取幫助。