![특정 시간이 지나면 라인 쉘 스크립트 읽기를 중지하는 방법은 무엇입니까?](https://linux55.com/image/151583/%ED%8A%B9%EC%A0%95%20%EC%8B%9C%EA%B0%84%EC%9D%B4%20%EC%A7%80%EB%82%98%EB%A9%B4%20%EB%9D%BC%EC%9D%B8%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EC%9D%BD%EA%B8%B0%EB%A5%BC%20%EC%A4%91%EC%A7%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
나는 이 명령을 실행하고 있습니다 :
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분 동안 실행된 후 중지됩니다.