나는 이 명령을 실행하고 있습니다 :
tail -f rest.log | while read
LOGLINE
do
[[ "${LOGLINE}" == *"Finished building"* ]] && pkill -P $$ tail
done
파일에 "Build Completed"라는 문자열이 나타날 때까지 로그 파일을 읽습니다. 그렇다면 tail
명령이 종료됩니다. 문자열이 전혀 나타나지 않는 경우도 있습니다. 이 경우에는 잠시 후에 루프를 종료하고 싶습니다. 약간의 시간 초과가 발생했습니다. 5분 후에 문자열 검색을 중지해야 한다고 가정해 보겠습니다. 이 목표를 어떻게 달성할 수 있나요? 첫 번째 명령 앞에 시간 초과를 사용해 보았지만 tail
효과가 없었습니다.
답변1
이것을 시도해 보십시오: read
시간 초과 옵션이 내장되어 있습니다 -t
!
while read -t 10 LOGLINE
do
[[ "${LOGLINE}" == *"Finished building"* ]] && pkill -P $$ tail
done
위의 10 seconds
. 에서 필요한 시간 제한을 언급하세요 seconds
. 더 많은 참고자료man read
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
답변2
또 다른 옵션은 다른 스크립트에서 while 루프와 함께 timeout 명령을 사용하는 것입니다.
timeout 300 script_that_searches_for_finished_build.sh
스크립트는 5분 동안 실행된 후 중지됩니다.