2016-12-15 10 views
1

私のプロセスはスクリプト./start.shの中で "./real_process"を呼び出し、8G以上のメモリを取ると自動的にreal_processを終了させます。起動時にプロセスによって消費されるメモリを制限する方法はありますか?

私はこの制限を「すべてのプロセス」にしたくありません。ちょうどその特定のもの。私はスタートアップ時にそれをやりたい。

+0

[ulimit internal command](http://ss64.com/bash/ulimit.html)についてのbashのmanページを読む – Jdamian

+0

@ Jdamian "すべてのプロセス"についてこの制限は望ましくありません。ちょうどその特定のもの。私はスタートアップ時にそれをやりたい。 – CodeNoob

+0

ここで、 'ulimit'コマンドは**すべてのプロセス**に適用されています。 Jeremy Gurrの答えを慎重に読んでください。 – Jdamian

答えて

3

あなたはあなたのスクリプトの先頭でのulimit使用することができ、次のいずれか

ulimit -m 8000000 

またはそれが何らかの理由で利用できない場合、背景にあなたのreal_processをフォークし、それはだ場合は、定期的にチェックするために、スクリプトの残りの部分を使用しますメモリ使用量が8Gを超えて終了しました。

while true; do 
    # check memory usage of process 
    # kill process if too high 
    sleep 60 
done 
1

あなたは常に/ procの/ $ PID/SMAPからのメモリ使用量をつかむためにそれを設定することができます。最大8GBを超えると、プロセスを終了します。

ps -e| grep [your_process_name]を使用してPIDを取得します。 $value='/proc/$pid/smap'でメモリ使用量を把握し、$valueと8GB未満であるかどうかを判断するために必要な値を比較してください。プロセスを強制終了するには、Killコマンドを使用します。これをループで投げる。

関連する問題