두 개의 로그 파일 조정


14

성능 정보와 함께 여러 로그 파일로 출력하는 웹 응용 프로그램이 있습니다. 하나의 로그 파일은 코드 실행 시간을 출력하고 다른 로그 파일은 SQL 타이밍을 출력합니다. 로거 또는 로그 파일을 생성하는 코드를 제어 할 수 없지만 로그를 한 곳에서 출력하고 싶습니다.

현재 나는 이와 같은 일을하고있다.

tail -f sqlLogs.log | grep sql-time
tail -f perflogs.log | grep exec-time

이것은 애플리케이션에서 SQL이 실행될 때마다 콘솔에 무언가를 출력합니다. 그러나 두 개의 별도 SSH 세션에서 코드를 실행해야합니다. 그러나 동일한 SSH 세션에서 두 파일을 모두 처리 할 수 ​​있기를 원합니다. 이게 가능해?

답변:


20

예, tail 은 명령 행에 제공된 모든 파일에 추가 된 행을 출력합니다.

tail -F sqlLogs.log perflogs.log | egrep '(sql-time|exec-time)'

글쎄, 그건 내 길보다 쉽다! (lol, 방금 내 것이 아닌 대답을 찬성했다. 호기심을 위해 내 것을 떠날 것이다)
Jeremy

4

MultiTail을 살펴보십시오 . 당신의 친구입니다.

여러 개의 로그 테일을 넣을 수 있습니다

 -다른 창문, al vim의 '분할'
 -또는 두 개의 (또는 N) 스트림을 하나의 뷰로 병합하고
 -정규식으로 증기를 필터링 할 수 있으며 원하는 경우
 -출력을 파일로 '티'합니다

http://www.vanheusden.com/multitail/

우분투 10.04에서 : sudo apt-get install multitail


2

그러나이 screen명령을 사용하면 한 터미널에서 2 개의 bash 세션을 실행할 수 있습니다.

  • 실행 screen시작하는,
  • 그런 Ctrl-a다음 S(NOTE : capital S)를 입력하여 화면을 2로 분할하십시오.
  • Ctrl-a그런 다음 Tab두 세션 사이로 이동합니다.
  • Ctrl-a다음 c이 새로운 지역에서 쉘을 시작합니다.

(이를 사용하기 전에 Riccardo의 답변을 참조하십시오. 그는 훨씬 간단합니다. 비슷하지만 다른 문제가있는 사람들에게 유용 할 수 있으므로 이것을 남겨 두겠습니다).


0

mkfifo 를 사용 하여 출력을 하나의 파이프로 다중화 할 수 있습니다

fifo 파이프를 만들고 파이프에 꼬리 n 파일을 만든 다음 파이프를 cat

 mkfifo pipeName
 tail file1 &
 tail file2 &
 ...
 tail fileN &
 cat pipeName

끝나면

 rm pipeName

1
실제로는 fifo를 사용하지 않습니다. 당신은 아마도 tail 명령이되기를 원할 것 tail fileN >> pipeName입니다.
Jeremy Kerr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.