nohup
命令本身并不提供直接限制進程資源使用的功能。它的主要作用是讓進程忽略掛起(SIGHUP)信號,從而在用戶退出登錄后繼續運行
ulimit
命令限制資源:在啟動進程之前,可以使用 ulimit
命令來限制進程的資源使用。例如,以下命令將限制進程的最大CPU時間為10分鐘,最大文件大小為100MB:
ulimit -t 600 -f 100000
./your_command
注意:ulimit
命令設置的資源限制僅對當前shell會話有效。如果你在一個腳本中使用 ulimit
,請確保它在啟動進程之前執行。
cgroups
限制資源:cgroups
(control groups)是Linux內核提供的一種資源管理機制,可以用來限制、記錄和隔離進程組的資源使用。以下是一個簡單的示例,展示如何使用 cgroups
限制進程的CPU和內存使用:
首先,創建一個新的cgroup:
sudo cgcreate -g cpu,memory:/my_cgroup
接下來,設置CPU和內存的使用限制:
echo "100000" | sudo tee /sys/fs/cgroup/cpu/my_cgroup/cpu.cfs_quota_us
echo "104857600" | sudo tee /sys/fs/cgroup/memory/my_cgroup/memory.limit_in_bytes
在這個例子中,我們將CPU使用限制為100,000微秒(即100毫秒),將內存使用限制為100MB。
最后,將你的進程添加到新創建的cgroup中,并啟動它:
echo $$ | sudo tee /sys/fs/cgroup/cpu/my_cgroup/tasks
echo $$ | sudo tee /sys/fs/cgroup/memory/my_cgroup/tasks
./your_command
這樣,your_command
進程將在 my_cgroup
cgroup的限制下運行。
請注意,cgroups
功能需要內核支持。你可以通過運行 grep cgroup /proc/filesystems
命令來檢查你的系統是否支持cgroups。如果輸出中包含 cgroup
,則表示你的系統支持這個功能。