回答:
Gillesの回答に加えて、実行時の変更を含め、必要な処理を正確に実行するcpulimitツールがあります。さらに、特定のCPU /コアIIRCのみに制限できます。
プログラム内から、を呼び出しますsetrlimit(RLIMIT_CPU, ...)
。シェルから呼び出しますulimit -t 42
(これは標準ではありませんが、ほとんどのUNIXバリアントでほとんどのシェル(bashとkshを含む)でサポートされています)。これにより、現在のプロセスがN秒のCPU時間を消費すると強制終了されます。制限は子プロセスに継承されます。一般的なシェルのイディオムは(ulimit -t 42; runaway_process)
、後で同じシェルから他の無制限のプロセスを実行できるようにする場合です。
参照してください特定のプロセスがUNIXで使用できるメモリの量を制限する方法はありますか? 。原則は同じで、異なるリソースを制限するだけです。
time php /cgi/foo.php
場合は、を使用できますbash -c 'ulimit -t 42; exec "$0" "$@"' php /cgi/foo.php
。
また、このtimeout
コマンドを使用して、プロセスが指定された時間より長く実行されるのをブロックすることもできます。
$ date
Mon May 6 07:35:07 EDT 2013
$ timeout 5 sleep 100
$ date
Mon May 6 07:35:14 EDT 2013
詳細については、タイムアウトのmanページを参照してください。
setrlimit
...私はシェルを持っていないので、私はPHPを通してそれを生み出しています