ログ出力に基づいて継続的にコマンドを実行する

ログ出力に基づいて継続的にコマンドを実行する

サービスを1つずつ開始するスクリプトを作成しました。各サービスが完了したら、次のコマンドを実行し、次のコマンドを提供したように、最初のコマンドが実行されるのを待つ必要があります。

wait_for "Server started in RUNNING mode"
wait_for "socket listener started on port"

ただし、このロジックは使用しません。

wait_for() {
    res=0
    while [[ ! $res -gt 0 ]]
    do
        res=$(tail -5 "$START_LOG" | fgrep -c "$1")
        sleep 5
    done
}

答え1

wait_for() {
    ( tail -n5 -F "$START_LOG" 2>/dev/null & ) | fgrep -l "$1" >/dev/null
}

-F対数回転も続くことを意味します。

&tail親シェルが死ぬのを待たないように背景に送信されます。次のメッセージが記録されるまで、プロセスはしばらく中断されます。

関連情報