私のプロセスはスクリプト./start.sh
の中で "./real_process
"を呼び出し、8G以上のメモリを取ると自動的にreal_processを終了させます。起動時にプロセスによって消費されるメモリを制限する方法はありますか?
私はこの制限を「すべてのプロセス」にしたくありません。ちょうどその特定のもの。私はスタートアップ時にそれをやりたい。
私のプロセスはスクリプト./start.sh
の中で "./real_process
"を呼び出し、8G以上のメモリを取ると自動的にreal_processを終了させます。起動時にプロセスによって消費されるメモリを制限する方法はありますか?
私はこの制限を「すべてのプロセス」にしたくありません。ちょうどその特定のもの。私はスタートアップ時にそれをやりたい。
あなたはあなたのスクリプトの先頭でのulimit使用することができ、次のいずれか
ulimit -m 8000000
またはそれが何らかの理由で利用できない場合、背景にあなたのreal_processをフォークし、それはだ場合は、定期的にチェックするために、スクリプトの残りの部分を使用しますメモリ使用量が8Gを超えて終了しました。
while true; do
# check memory usage of process
# kill process if too high
sleep 60
done
あなたは常に/ procの/ $ PID/SMAPからのメモリ使用量をつかむためにそれを設定することができます。最大8GBを超えると、プロセスを終了します。
ps -e| grep [your_process_name]
を使用してPIDを取得します。 $value='/proc/$pid/smap'
でメモリ使用量を把握し、$value
と8GB未満であるかどうかを判断するために必要な値を比較してください。プロセスを強制終了するには、Kill
コマンドを使用します。これをループで投げる。
[ulimit internal command](http://ss64.com/bash/ulimit.html)についてのbashのmanページを読む – Jdamian
@ Jdamian "すべてのプロセス"についてこの制限は望ましくありません。ちょうどその特定のもの。私はスタートアップ時にそれをやりたい。 – CodeNoob
ここで、 'ulimit'コマンドは**すべてのプロセス**に適用されています。 Jeremy Gurrの答えを慎重に読んでください。 – Jdamian