116

重複の可能性:
特定のタイムアウト後に子プロセスを強制終了する Bash スクリプト

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

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

4

2 に答える 2

235

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

timeout 15s command

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

于 2012-04-19T09:17:34.637 に答える
64

一部のマシンには、インストールされていないtimeout/利用できないものがあります。その場合、プロセスをバックグラウンドで実行できます。その PID は次のように保存され$!ます。次に、必要な時間スリープしてから、それを殺します。

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

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

于 2012-04-19T09:16:35.967 に答える