아주 정기적으로 파일에 몇 가지 내용이 쓰여진 후 파일을 읽은 후 그 파일을 읽는 응용 프로그램이 실행됩니다. 우리 회사를 통해 네트워크 대기 시간이 크게 다르다는 것을 알게되었습니다. 예를 들어 sleep 2
은 간단하게는 충분하지 않습니다.쉘 스크립트에서 NFS 대기 시간을 다루는 방법
waitLoop()
{
local timeout=$1
local test="$2"
if ! $test
then
local counter=0
while ! $test && [ $counter -lt $timeout ]
do
sleep 1
((counter++))
done
if ! $test
then
exit 1
fi
fi
}
이 test="[ -e $somefilename ]"
작동 :
test="grep -sq \"^sometext$\" $somefilename"
을 시도했지만 이것이 작동하지 않았습니다. 누군가 왜 저에게 말할 수 있습니까?
이러한 테스트를 수행하는 다른 옵션이 있습니까?
파일에서 꼬리를 실행하고 꼬리의 출력 (즉, 마지막 줄) 만 검사 할 수 있습니까? 꼬리가 파일을 바꿀 때 검사하기 위해 스크립트를 더 똑똑하게 검사한다고 가정합니다. (그리고 가능성은 꼬리가 더 적절한 방식으로 수행합니다) – nos
올바른 접근 방식은 "일부 물건"이 무엇이고 무엇이 "응용 프로그램"입니다. 해결하고자하는 실제 문제에 대해 더 자세히 설명해 주시겠습니까? 서면으로 된 질문은 다소 모호합니다. 당신이 생각하지 못했던 완전히 다른 접근법이있을 수 있습니다. –
내 수정 된 답변보기 –