라이브 테일, 다른 폴더의 파일 포함 및 제외

라이브 테일, 다른 폴더의 파일 포함 및 제외

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에서 실행한 다음 보기 좋게 보이도록 전체 로그를 추적할 수 있습니다.

관련 정보