Linuxでプログラムの実行時間を制限する方法は?

Linuxでプログラムの実行時間を制限する方法は?

それぞれpython simulate.py <parameter list>

私にとって必要なのは、プロセスを自動的に終了する一種の「ランタイム制約」コマンドです。Ctrl+Cしかし、プロセスがそれ自体正常に終了しない場合は、指定された時間以降に簡単な終了も機能すると思います。

もちろん、これらのスクリプトを直接書くこともできますが、誰かが私より先に書いたかどうか疑問ですpstime

ベストアンサー1

潜在的なソリューション #1

使用timeoutコマンド:

$ date
Mon May  6 07:35:07 EDT 2013
$ timeout 5 sleep 100
$ date
Mon May  6 07:35:14 EDT 2013

timeoutしばらくしても停止しない場合は、コマンドと処理にガードを設定することもできます。kill

$ date
Mon May  6 07:40:40 EDT 2013
$ timeout -k 20 5 sleep 100
$ date
Mon May  6 07:40:48 EDT 2013

プロセスが停止してsleep 100から最大20秒待ってからまだ実行中の場合は、シグナルを送信timeoutします。kill

潜在的なソリューション #2

より危険ですが、別のアプローチは次のとおりです。

./myProgram &
sleep 1
kill $! 2>/dev/null && echo "myProgram didn't finish"

Stack Overflowの質問でこの技術を見つけました。Linuxでのプログラム実行時間の制限。具体的には回答

メモ:@mattdmが残したコメントによれば、上記のアプローチは、プロセスの後に新しいプロセスが開始されなかったと仮定しているため危険です。したがって、新しいPIDは割り当てられません。このため、このアプローチは使用しないでくださいが、ここではこの問題を解決するための一般的なアプローチへの参照のみを目的としています。このtimeout方法は、2つの方法のうちより良い選択です。

おすすめ記事