여러 파일을 tail -f하고 단일 출력에서 ​​각 파일을 개별적으로 grep하는 방법은 무엇입니까?

여러 파일을 tail -f하고 단일 출력에서 ​​각 파일을 개별적으로 grep하는 방법은 무엇입니까?

여러 개의 로그 파일(웹 서버 관련, 다양한 error_log, access_log 등)이 있고 이를 실시간으로 모니터링하고 싶습니다(예: 최근 업데이트 확인). 각 파일을 필터링하려면 다른 문자열을 사용하거나 필터링 없이 사용해야 합니다. 개별적으로.

로그 파일 세트가 있다고 가정해 보겠습니다.file1.log file2.log file3.log file4.log file5.log

file1.log file2.log file3.log필요한 처음 세 파일문자열로 필터링string사용자 이름의 경로 또는 일부를 나타냅니다.

file4.log file5.log마지막 두 파일을 봐야 해요필터링 없이, 즉 업데이트를 있는 그대로 봅니다.

내가 아는 바는 tail -f file1.log file2.log file3.log | grep string이것을 사용하여 구분 기호로 구분된 세 파일 모두의 원하는 출력을 제공 할 수 있다는 것입니다 ==> fileX <==. 나는 마지막 두 파일에 대해 동일한 방법을 사용했습니다 tail -f file4.log file5.log. 이것은 나에게 필요한 것을 제공하지만 이것은 별도의 명령입니다.

하지만 이 두 명령을 결합하여 터미널에서 실시간 출력을 얻는 방법을 모르겠습니다.

세미콜론 등으로 ;구분 &&된 두 개의 명령을 실행해 보았지만 예상대로 작동하지 않았습니다.

내 질문은tail -ftail -f 파일 구분 기호를 사용한 고급 필터링을 사용하여 여러 명령을 단일 출력으로 결합하는 방법은 무엇입니까 ==> fileX <==?

백업 문제 로그 파일 변경 사항을 실시간으로 확인하여 유사한 결과를 처리할 수 있는 다른 방법이 있습니까?

답변1

생각하다다음과 같이 간단한 것을 찾고 있습니다.

tail -f file1.log file2.log file3.log | grep string & tail -f file4.log file5.log 

다음 스크립트를 실행하여 이를 테스트했습니다.

#!/bin/bash
while true; do echo file1 $(date); echo "unwanted"; sleep 3; done >> file1.log &
while true; do echo file2 $(date); echo "unwanted"; sleep 3; done >> file2.log &
while true; do echo file3 $(date); echo "unwanted"; sleep 3; done >> file3.log &


while true; do echo file4 $(date); echo "unwanted"; sleep 3; done >> file4.log &
while true; do echo file5 $(date); echo "unwanted"; sleep 3; done >> file5.log &

보시다시피 스크립트는 fileN다음 출력을 인쇄한 date다음 unwanted5개의 로그 파일 각각에 대해 3초마다 새 줄에 문자열을 인쇄합니다. 그런 다음 위의 명령을 실행하고 다음 출력을 얻습니다.

$ tail -f file1.log file2.log file3.log | grep 'file' & tail -f file4.log file5.log 
[4] 861299
==> file4.log <==
file4 Sun Dec 17 01:34:31 PM EET 2023
unwanted
file4 Sun Dec 17 01:34:33 PM EET 2023
unwanted
file4 Sun Dec 17 01:34:34 PM EET 2023
unwanted
file4 Sun Dec 17 01:34:36 PM EET 2023
unwanted
file4 Sun Dec 17 01:34:37 PM EET 2023
unwanted

==> file5.log <==
file5 Sun Dec 17 01:34:31 PM EET 2023
unwanted
file5 Sun Dec 17 01:34:33 PM EET 2023
unwanted
file5 Sun Dec 17 01:34:34 PM EET 2023
unwanted
file5 Sun Dec 17 01:34:36 PM EET 2023
unwanted
file5 Sun Dec 17 01:34:37 PM EET 2023
unwanted
==> file1.log <==
file1 Sun Dec 17 01:34:31 PM EET 2023
file1 Sun Dec 17 01:34:33 PM EET 2023
file1 Sun Dec 17 01:34:34 PM EET 2023
file1 Sun Dec 17 01:34:36 PM EET 2023
file1 Sun Dec 17 01:34:37 PM EET 2023
==> file2.log <==
file2 Sun Dec 17 01:34:31 PM EET 2023
file2 Sun Dec 17 01:34:33 PM EET 2023
file2 Sun Dec 17 01:34:34 PM EET 2023
file2 Sun Dec 17 01:34:36 PM EET 2023
file2 Sun Dec 17 01:34:37 PM EET 2023
==> file3.log <==
file3 Sun Dec 17 01:34:31 PM EET 2023
file3 Sun Dec 17 01:34:33 PM EET 2023
file3 Sun Dec 17 01:34:34 PM EET 2023
file3 Sun Dec 17 01:34:36 PM EET 2023
file3 Sun Dec 17 01:34:37 PM EET 2023

관련 정보