以下は私のコードの一部です。
idql -n $REPOSITORY_NAME.$cs -Udmadmin -P"" -R$DM_SCRIPTS/test.api > /dev/null 2>&1
if [ $? != 0 ]; then
echo " \c"
echo "ERROR: Cannot connect to: $REPOSITORY_NAME.$cs on $HOST"
else
echo " Successfully connected to: $REPOSITORY_NAME.$cs"
fi
これがサービス監視に使用する主なロジックです。ただし、サービスが中断されることがよくあるため、上記のコードスニペットの最初の行が中断された後も続行されません。したがって、これらの「サービスの中断」状況を捉えることはできません。
最も重要なのは、既存の条件(if-else条件文で指定)を確認し続け、さらに「保留中」の状態も確認する必要があることです。コマンドがidql
5秒以上かかる場合、コマンドは中断されたと見なすことができます。
ベストアンサー1
私の考えでは、あなたが欲しいと思います。timeout
システムの一部coreutils
であり、システムで利用可能なコマンド
5秒後にコマンドを終了するには、次のように変更します。
timeout 5 iqdl -n $REPOSITORY_NAME.$cs ...
ない場合は、coreutils
ここからダウンロード、ビルド、インストールできます。http://www.gnu.org/software/coreutils/
また見なさい:https://stackoverflow.com/questions/687948/timeout-a-command-in-bash-without-unnecessary-delay