1

すべてのリソースを使い果たし、効果的にマシンを強制終了できるプログラムを呼び出すシェル スクリプトを作成しています。私はこれが起こるのを防がなければなりません。

私のアイデアは、ulimit を使用してリソース制限を設定することでした (実際に ulimit を実際に使用する必要があったのは初めてです) が、強制終了されたプロセスの終了ステータスが 0 であることに少し驚きました。

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

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

4

1 に答える 1

1

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
于 2011-08-27T09:05:27.460 に答える