2013-05-23 4 views
6

私はスクリプトを書いており、数秒後にコマンドの1つを終了する方法を知りたいと思っています。たとえば。スクリプトで2つのアプリケーションコマンドが実行されているとします。n秒後にコマンドを終了するには?

#!/bin/bash 

for i in `cat servers` 
do 
<command 1> $i >> Output_file #Consistency command 
<command 2> $i >> Output_file #Communication check 
done 

これらのコマンドは、アプリケーションから/に一貫性&通信を確認することです。私は、コマンド1 & 2がほんの数秒間実行されていることを確認し、特定のホストからの応答がない場合は、次のコマンドに進みます。

おかげ

+1

あなたはこのを探しているように見える:[タイムアウト不要な遅延なしのbashでコマンド](http://stackoverflow.com/questions/687948/timeout- a-command-in-bash-without-necessary-delay) – devnull

+0

私はそれを見ましたが、それは簡単な方法ではありませんか?私は小さなスクリプトを複雑すぎるようにしたくありません! :) – Marcos

+0

これはimagegagickの 'display'コマンドに便利です。これはxargsでうまく動作しません。 –

答えて

10

bashの coreutilsのは「timeout`コマンドを持っています。マニュアルから

説明

スタートCOMMAND、まだNUMBER秒後に実行されている場合はそれを殺します。 SUFFIXは秒(デフォルト)の "s"、 分の "m"、時間は "h"、日は "d"です。例えば

timeout 5 sleep 6

+0

私はsolaris上でrpcinfoを試しています... "timeout 5 rpcinfo -p server_name"コマンドが見つかりませんでしたが、マニュアルページのエントリがあります。 – Marcos

+1

'timeout'はbashビルトインではありません。これはGNU coreutilsによって提供されています。 – devnull

+0

どうすれば使えますか? – Marcos

関連する問題