"플래그" 파일의 다양한 값을 기록하는 방법

"플래그" 파일의 다양한 값을 기록하는 방법

한 줄의 "플래그" 파일을 주기적으로 업데이트하는 블랙박스 시스템이 있습니다. 이 한 줄 파일은 시스템 수명 동안 FSM 상태에 따라 다양한 값을 갖습니다.

예를 들어 '다운로드', '확인', '게시' 등이 있습니다. 특정 시점에서 값이 다르기 때문에 소프트웨어는 "플래그" 파일을 열고 이를 잘라낸 후 새로운 한 줄 값을 작성해야 합니다.

연속적으로 다른 값의 로그를 어떻게 유지합니까? 비슷한 접근 방식을 고려했지만 tail -f, 다른 값을 기록하고 소프트웨어가 해당 값을 업데이트할 때 파일 시스템을 방해하지 않는다는 것을 보장할 수 있었습니다. tail -f잠시 후 "파일 잘림"으로 인해 간단한 방법이 실패합니다.

답변1

실패할 경우 파일 열기/읽기를 다시 시도하도록 할 수도 있습니다 tail -F(대문자로 표시됨).

에서 man tail:

   -f, --follow[={name|descriptor}]
          output appended data as the file grows; -f, --follow, 
          and --follow=descriptor are equivalent

   -F     same as --follow=name --retry

   --retry
          keep trying to open a file even when it is or becomes
          inaccessible; useful when following by name, i.e., with
          --follow=name

귀하의 버전 에 (동등 ) tail이 없으면 inotify를 사용한 다음 close_write를 기다릴 수 있습니다( yes-Ftail -f=name --retryinotifywait이노티파이 도구):

file=foo

while inotifywait -qq -e close_write "$foo" >/dev/null; do
    cat "$foo"
done > log

tail -F이를 사용할 때 경쟁 조건이 있으므로 가능하다면 이 방법을 사용하는 것이 좋습니다 inotifywait.

관련 정보