알 수 없는 이름으로 새로 생성된 파일에 대한 Tail -f

알 수 없는 이름으로 새로 생성된 파일에 대한 Tail -f

실행할 때마다 새 로그 파일을 생성하는 프로그램이 있습니다. 무슨 일이 일어나고 있는지 보려면 로그를 보고 싶습니다 tail -f. 유일한 문제는 실제로 파일 이름을 미리 모른다는 것입니다.

그렇다면 특정 (쉘 글로브) 패턴과 일치하는 모든 파일을 추적할 수 있는 방법이 있습니까? 이런 식으로 쉽게 스크립트를 작성할 수 있을 것 같지만 이미 해결 방법이 있는지 궁금합니다.

답변1

이름을 모른 채 작업을 수행할 수 있는 직접적인 방법은 없다고 생각합니다 tail. 이를 알고 있다면 tail --follow=name --retry작동할 것이고 파일이 나타날 때까지 기다렸다가 따라가기 시작할 것입니다.

inotifywait나타나는 파일을 관찰한 다음 tail -f이를 따르기 시작 하는 작은 쉘 스크립트를 작성하는 것이 좋습니다 .

답변2

파일 이름을 미리 모르는 경우:

  1. 다음과 같은 파일 이름을 결정하십시오.foo.log
  2. 해당 파일을 확인하세요. tail -F foo.log(foo가 존재하는지 여부는 중요하지 않습니다)
  3. 도구를 사용하여 디렉토리에서 파일 변경 사항을 감시하고 명령을 실행하십시오.

명령의 경우 다음 중 하나를 수행합니다.

  • 새 파일을 이동하여 foo.log를 덮어씁니다 mv the_new_file_which_appeared foo.log(앱 로깅이 한 번 열리면 제대로 작동합니다).
  • 아니면 그냥 심볼릭 링크: ln -s the_new_file_which_appeared foo.log- 그리고 꼬리가 그것을 잡아야 합니다.

디렉터리를 제대로 감시하려면(3단계) 구성 가능하고 영리한 도구가 필요합니다.

개인적으로 나는경비원와 더불어가드::프로세스.

실제로 Guard는 쉘 스크립트를 사용하는 것보다 훨씬 무겁지 않으며(Linux의 inotify 위에 있는 얇은 계층) 설정이 매우 빠르고 쉽습니다.

관련 정보