tail
특정 파일이 포함되거나 제외된 세 개의 다른 폴더에 살고 싶습니다 .
폴더 1:
- 경로:/var/www/app/var/log/
- 제외: file1.log 및 file2.log
폴더 2:
- 경로:/var/log/web/log/
- 포함 내용: error.log
폴더 3:
- 경로:/var/log/service/log/
- 포함 내용: app1.error.log 및 app2.error.log
하나의 명령으로 세 개의 다른 폴더에 있는 특정 파일을 어떻게 포함하고 제외할 수 있습니까 tail
?
tail -f ???
지금까지 시도한
tail -f /var/www/app/var/log/!(file1,file2).log /var/log/web/log/error.log /var/log/service/log/{app1,app2}.log
그러나 이것은 작동하지 않습니다. find
+를 사용해야 할 것 같아요 .tail
답변1
사용내 대답도착하다SU에 대한 귀하의 질문도 다르지 않습니다.find
찾고 있는 파일을 찾으려면 세 가지 명령을 만듭니다 . 그 다음에:
{ find … -print0 ; find … -print0 ; find … -print0 ; } | xargs -r -0 tail -F
노트:
-F
이것 때문에:tail -f
로그 파일을 순환하는 방법은 무엇입니까 ?find
명령은 한 번만 실행됩니다. 일치하는 이름을 가진 새 파일이 나타나지만 당시 존재하지 않는 경우tail
해당 파일은 무시됩니다. 즉,tail
시작되면 모든 매개변수가 고정되고 생성될 파일이 그 매개변수에 포함되지 않습니다.- 결과 양식이
find
다음을 초과하는 경우한계그런 다음xarg
여러 개가 실행됩니다tail
(그러나 기본적으로 병렬로 실행되지는 않음). 물론 당신은 이것을 원하지 않습니다.find
적절한 수의 파일을 찾고 제한을 초과하지 않기를 바랍니다 . find -print0
그리고xargs -r -0
휴대하기가 쉽지 않습니다. 당신이 태그했어요우분투;그들은 우분투에서 일합니다.
답변2
원하는 모든 파일을 테일링하세요... 각 테일을 파일로 출력하세요... 새 파일을 테일링하세요.
tail -f /var/log/large.log > ~/full.log && tail -f /var/log/medium.log > ~/full.log && tail -f ~/full.log
명령으로 실행할 수 있지만 처음에는 약간 이상해 보이지만 원하는 경우 다른 tty에서 실행한 다음 보기 좋게 보이도록 전체 로그를 추적할 수 있습니다.