サービスを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
親シェルが死ぬのを待たないように背景に送信されます。次のメッセージが記録されるまで、プロセスはしばらく中断されます。