web-dev-qa-db-ja.com

Bashでタイムアウトを設定してプロセスを実行する方法は?

可能性のある複製:
指定されたタイムアウト後に子プロセスを強制終了するBashスクリプト

特定のコマンドを15秒間実行してからコマンドを強制終了するシェルスクリプトを作成する方法はありますか?

スリープ、待機、pingを試しましたが、間違って使用している可能性があります。

109
AlanF

timeoutコマンドを使用します。

timeout 15s command

注:一部のシステムではcoreutilsをインストールする必要があり、他のシステムでは見つからないか、異なるコマンドライン引数があります。 @ArjunShankarが投稿した代替ソリューションを参照してください。それに基づいて、その定型コードをカプセル化し、同じことを行う独自のポータブルtimeoutスクリプトまたは小さなCアプリを作成できます。

220
Karoly Horvath

一部のマシンにはtimeoutがインストールされていないか、使用できません。その場合、プロセスをバックグラウンドで実行できます。そのPIDは$!として保存されます。その後、必要な時間だけスリープし、それを強制終了します。

some_command arg1 arg2 &
TASK_PID=$!
sleep 15
kill $TASK_PID

このURL で、これを実現するための複数のソリューションが記載されていることがわかりました。

56
ArjunShankar