如何創建 RAM 使用受限的使用者?
所以我有 4 GB RAM + 4GB 交換。我想創建一個記憶體和交換有限的使用者:3 GB RAM 和 1 GB 交換。這樣的事情可能嗎?是否可以在不創建單獨的使用者(並且不安裝任何特殊應用程序 - 只有預設的 Debian/CentOS 伺服器配置,並且不使用 sudo)的情況下啟動具有有限 RAM 和交換可用的應用程序?
更新:
所以我打開了 terminall 並輸入了ulimit command:
ulimit -v 1000000
這應該是976,6Mb
限制。接下來我打電話ulimit -a
,看到限制是“開”的。然後我啟動了一些 bash 腳本來編譯並啟動我的應用程序nohup
,一個很長的nohup ./cloud-updater-linux.sh >& /dev/null &
……但過了一段時間我看到:(如果沒有應用限制就可以了——它下載了一些大的庫,並開始編譯它。)
但我認為我對 shell 和所有使用/從它啟動的程序應用了限制
ulimit -v 1000000
?我做錯了什麼?如何使終端及其啟動的所有子程序都受到記憶體使用的限制?
ulimit
是為此而生的。ulimit
您可以在每個使用者或每個組的基礎上設置預設值/etc/security/limits.conf
ulimit -v KBYTES
設置最大虛擬記憶體大小。我認為您無法提供最大數量的交換。這只是對使用者可以使用的虛擬記憶體量的限制。所以你
limits.conf
會有這條線(最多4G
記憶體)luser hard as 4000000
更新 - CGroups
由每個程序強加
ulimit
的限制。limits.conf
在這一點上我絕對不清楚。如果您想限制使用者使用的記憶體總量(這是您所要求的)。你想使用cgroups。
在
/etc/cgconfig.conf
:group memlimit { memory { memory.limit_in_bytes = 4294967296; } }
這將創建一個
cgroup
最大記憶體限制為 4GiB 的記憶體。在
/etc/cgrules.conf
:luser memory memlimit/
這將導致執行的所有程序都
luser
在.memlimit``cgconfig.conf