실행할 때마다 새 로그 파일을 생성하는 프로그램이 있습니다. 무슨 일이 일어나고 있는지 보려면 로그를 보고 싶습니다 tail -f
. 유일한 문제는 실제로 파일 이름을 미리 모른다는 것입니다.
그렇다면 특정 (쉘 글로브) 패턴과 일치하는 모든 파일을 추적할 수 있는 방법이 있습니까? 이런 식으로 쉽게 스크립트를 작성할 수 있을 것 같지만 이미 해결 방법이 있는지 궁금합니다.
답변1
이름을 모른 채 작업을 수행할 수 있는 직접적인 방법은 없다고 생각합니다 tail
. 이를 알고 있다면 tail --follow=name --retry
작동할 것이고 파일이 나타날 때까지 기다렸다가 따라가기 시작할 것입니다.
inotifywait
나타나는 파일을 관찰한 다음 tail -f
이를 따르기 시작 하는 작은 쉘 스크립트를 작성하는 것이 좋습니다 .
답변2
파일 이름을 미리 모르는 경우:
- 다음과 같은 파일 이름을 결정하십시오.
foo.log
- 해당 파일을 확인하세요.
tail -F foo.log
(foo가 존재하는지 여부는 중요하지 않습니다) - 도구를 사용하여 디렉토리에서 파일 변경 사항을 감시하고 명령을 실행하십시오.
명령의 경우 다음 중 하나를 수행합니다.
- 새 파일을 이동하여 foo.log를 덮어씁니다
mv the_new_file_which_appeared foo.log
(앱 로깅이 한 번 열리면 제대로 작동합니다). - 아니면 그냥 심볼릭 링크:
ln -s the_new_file_which_appeared foo.log
- 그리고 꼬리가 그것을 잡아야 합니다.
디렉터리를 제대로 감시하려면(3단계) 구성 가능하고 영리한 도구가 필요합니다.
실제로 Guard는 쉘 스크립트를 사용하는 것보다 훨씬 무겁지 않으며(Linux의 inotify 위에 있는 얇은 계층) 설정이 매우 빠르고 쉽습니다.