2011-07-21 16 views
0

私はすべてのリソースを使い果たし、効果的にマシンを殺すことができるプログラムを呼び出すシェルスクリプトを書いています。私はこれをいくつか起こらないようにしなければなりません。ulimitは終了ステータスとして0を返します...プロセスが終了したら1を得る方法?

私のアイデアは(私が今まで実際に、実際にはulimitを使用するために必要なたのは初めて)リソース制限を設定するためにはulimitを使用していたが、私は殺されたプロセスの終了ステータスが0

であることを少し驚きましたシェルスクリプトがリソースを制限し、その制限を超えたためにシェルによってプロセスが強制終了されるのを検出するにはどうすればよいですか?

私はbashを使用していますが、任意のコメントは読む価値があります。

+0

私たちは完全な画像を持っているので、bashスクリプトで使用している正確な呼び出しを 'ulimit'に、' ulimit -a'の出力を投稿してください。また、あなたがコントロールする違法プログラムのカスタムコードやサードパーティのパッケージもありますか?また、私はbashのタグを追加することをお勧めします、それはあなたの問題をより多くの目を取得します。がんばろう。 – shellter

答えて

0

ulimitsの1つを超えるプログラムは、エラー(ファイルディスクリプタ、プロセスの不足など)または最終的に信号(メモリ、CPU時間)を捕捉することによって終了します。つまり、問題のプログラムの終了ステータスをテストするだけです。

ulimit ... 
program 
xs=$? 
case $xs in 
0) ;; # all fine 
*) if [ $xs -gt 127 ]; then 
     echo caught a signal... 
    else 
     echo some error... 
    fi 
esac 
関連する問題