だから、4GBのRAM + 4GBのスワップスペースがあります。限られたRAMとスワップスペース(3GBのRAMと1GBのスワップスペース)を持つユーザーを作成したいと思います。そのようなことは可能ですか?限られたRAMでアプリケーションを起動し、別のユーザーを作成せずに(特別なアプリケーションをインストールせずにデフォルトのDebian / CentOSサーバー構成を使用し、sudoを使用せずに)交換できますか?
修正する:
だから端末を開いて入力します。限界値コマンド:制限ulimit -v 1000000
に似ています976,6Mb
。次に、電話をかけてulimit -a
制限が「オン」になっていることを知りました。その後、いくつかのbashスクリプトを実行してアプリケーションをコンパイルして起動しましたnohup
。チャンギ nohup ./cloud-updater-linux.sh >& /dev/null &
...しかし時間が経つと、次のような結果が出ます。
(制限が適用されない場合は問題ありません。大きなライブラリをダウンロードしてコンパイルを開始します。)
しかし、シェルに制限を適用し、すべてのプロセスがそれを使い始めたと思いますかulimit -v 1000000
?私は何が間違っていましたか?端末と端末で始まるすべての子プロセスのメモリ使用量をどのように制限できますか?
ベストアンサー1
ulimit
まさにこれのためです。ulimit
ユーザーごとまたはグループごとにデフォルト値を設定できます。
/etc/security/limits.conf
ulimit -v KBYTES
最大仮想メモリサイズを設定します。最大交換金額を提供することはできないようです。これは、単にユーザーが使用できる仮想メモリ量の制限です。
したがって、limits.conf
次の行があります(最大4G
メモリ)。
luser hard as 4000000
アップデート - CGroups
ulimit
課される制限はlimits.conf
プロセスごとに適用されます。私はこの点について全く不明です。
ユーザーが使用するメモリの合計量を制限したい場合(必要な事項)、使用したいcgroup。
存在する/etc/cgconfig.conf
:
group memlimit {
memory {
memory.limit_in_bytes = 4294967296;
}
}
cgroup
これにより、最大メモリ制限が4GiBのメモリが作成されます。
存在する/etc/cgrules.conf
:
luser memory memlimit/
これにより、実行中のすべてのプロセスがluser
で作成されたcgroup内で実行されます。memlimit
cgconfig.conf