2016-04-26 6 views
0

でプログラムを実行すると、manualによると、gtimeout 600のpython myprogram.pyが</p> </blockquote> <p></p> <blockquote> <p>、私はGNUのCoreutilsのtimeoutコマンドを実行していますタイムアウト

期間があります浮動小数点数の後にオプションの単位が続きます。

'秒DS(デフォルト) 日

時間「D」分間、「H」は「M」は、 'python myprogram.py部分は600秒(10分)以内に終了すべきです。驚いたことに、コマンドは実際には1時間後にタイムアウトします。どうして?

+0

は多分あなたのPythonスクリプトは正しくSIGTERMに応答していませんか? '-s 9 'を追加してみてください。 'gtimeout -s 9 600 python myprogram.py'を実行し、代わりにSIGKILLを送信します。 – CherryDT

+0

少し詳しく説明できますか?私はおそらくあなたの答えを受け入れるでしょう。 – zell

+1

これが正しい解決策であるかどうかは分かりませんが、試してみる必要があります。今は推測だったし、実際の答えが十分ではないと思った。しかし、プロセスを終了するには2つの方法があります:シグナル "SIGTERM"は基本的にプロセスに終了を要求します(それを拒否するかもしれません)。そして "SIGKILL"はブロックできず、プロセスを強制しますOSによって終了される。 'gtimeout'は通常SIGTERMを送ります(' kill'のように)。 'kill -9'のように' -s 'を使って '9'(シグナルの名前である' KILL'と同じ)を指定することができます。 – CherryDT

答えて

0

あなたのプログラムは、gtimeoutが "プログラムの終了を頼む"ために使用するシグナルSIGTERMを無視する可能性があります。

あなたは、このようにパラメータ-s 9を追加することで、無視されたりブロックされないことができ、代わりにgtimeout使用SIGKILLを持つことができます。

gtimeout -s 9 python myprogram.py 
関連する問題