웹 서버가 응답하기를 기다리는 bash에서 루프를 만드는 방법은 무엇입니까?
"."가 인쇄되어야합니다. 10 초마다 서버가 응답을 시작할 때까지 기다리십시오.
업데이트,이 코드는 서버에서 좋은 응답을 받는지 테스트합니다.
만약 curl --output / dev / null --silent --head --fail "$ url"; 그때 echo "URL 존재 : $ url" 그밖에 echo "URL이 존재하지 않습니다 : $ url" fi
웹 서버가 응답하기를 기다리는 bash에서 루프를 만드는 방법은 무엇입니까?
"."가 인쇄되어야합니다. 10 초마다 서버가 응답을 시작할 때까지 기다리십시오.
업데이트,이 코드는 서버에서 좋은 응답을 받는지 테스트합니다.
만약 curl --output / dev / null --silent --head --fail "$ url"; 그때 echo "URL 존재 : $ url" 그밖에 echo "URL이 존재하지 않습니다 : $ url" fi
답변:
질문을 chepner의 답변과 결합하면 이것은 나를 위해 일했습니다.
until $(curl --output /dev/null --silent --head --fail http://myhost:myport); do
printf '.'
sleep 5
done
$( )대신 사용하십시오 .
--head가요?
--head아무것도 변경되지 않지만 응답 내용 (예 : status.html)에 대한 논리를 연습하려면 할 수 있습니다.
--head항상 사용하는 특정 경우가 405있습니다. 작동하려면 제거해야했습니다
최대 시도 횟수를 제한하고 싶었습니다. Thomas의 대답을 바탕으로 다음과 같이 만들었습니다.
attempt_counter=0
max_attempts=5
until $(curl --output /dev/null --silent --head --fail http://myhost:myport); do
if [ ${attempt_counter} -eq ${max_attempts} ];then
echo "Max attempts reached"
exit 1
fi
printf '.'
attempt_counter=$(($attempt_counter+1))
sleep 5
done
--max-time 5어떤 이유로 링크 시간 초과 요청 을 추가 하는 것이 좋습니다
백틱의 사용 ` `은 오래되었습니다 . 사용 $( )하는 대신 :
until $(curl --output /dev/null --silent --head --fail http://myhost:myport); do
printf '.'
sleep 5
done