2012-04-19 10 views
95

可能性の重複:
Bash script that kills a child process after a given timeoutBashでプロセスをタイムアウトで実行するには?

、その後、15秒間、特定のコマンドを実行するコマンドを殺すシェルスクリプトを書くための方法はありますか?

私は睡眠を待って、pingを試みましたが、多分私はそれらを間違って使用しています。

+2

通常、ALARM信号を使用してトラップします。しかしコマンドユーティリティ[timelimit](http://devel.ringlet.net/sysutils/timelimit/)は有望です。 – Konerak

+0

これはofftopicとして投票しますか? :/ –

答えて

43

プロセスをバックグラウンドにすることができ、そのPIDは$!になります。そして、眠ると殺す:this URL

some_command some_arg1 some_arg2 & 
TASK_PID=$! 
sleep 15 
kill $TASK_PID 

私は、これを実現するために複数の解決策が記載されていることがわかります。

timeout 15s command 

注:あなたがcoreutilsをインストールする必要があるいくつかのシステムでは、他人にそれが見つからないか、別のコマンドライン引数を持っています

+3

私は最初に自分の答えを削除しましたが(明らかに、Karolyの方がはるかに素晴らしい)、一部の人は 'timeout' => undeletedを持っていないようです。 – ArjunShankar

190

timeoutコマンドを使用します。 @ArjunShankarによって掲載された別の解決策を参照してください。それに基づいて、ボイラープレートコードをカプセル化して、同じことをする独自のポータブルtimeoutスクリプトまたは小さなCアプリを作成することができます。

+3

コマンドが以前に終了した場合は即座に戻ります。 –

+0

コマンドでは15秒後にkillしようとしていますが、このコマンドを使用しようとしましたが、コマンドの実行を停止しませんでした。 – AlanF

+0

これはあなたが**コマンドを実行する方法です。 –

関連する問題