로그파일 원하는 지점찾기

Created:

로그파일 등에서 에러 및 원하는 지점을 찾고 싶은데 파일 내용이 길어서 바로 찾기가 쉽지 않을때 사용해보면 좋을 리눅스 명령어를 공유하고자 한다. 다만 로그가 발생한시점을 어느정도 짐작할 수 있어야하고 로그내용에 시간이나 timestamp가 찍혀 있어야 한다.


만약 찾고자 하는 문자열이 명확하다면 grep 명령어를 사용하여 바로 찾을 수도 있다.

cat {파일명} | grep -i "{찾고자하는 문자열}"

grep -i는 찾으려는 문자열의 대소문자를 구분하지 않는다.


그런데 찾고자 하는 문자열이 명확하지 않거나, 시간대로 찾을 경우엔 다른 방법이 필요할것 같다.

우선 파일의 맨 위, 맨 아래를 찾을 수 있는 명령어를 알아보면

head -n 100 {파일명} // 파일의 첫줄 부터 아래로 100줄까지 출력한다.
tail -n 100 {파일명} // 파일의 마지막 줄의 위로 100줄 부터 마지막 줄 까지 출력한다.

-n 파라미터는 출력하고자 하는 라인수를 지정할 수 있다. 기본값은 10이다.

위 명령어로 시작줄, 마지막 줄로부터 보고자 하는 라인만큼 -n을 사용해서 확인 할 수 있으나 일정 길이 이상 출력하려 하면 잘려서 보이지 않는 내용이 생긴다. 이때 more라는 명령어를 사용하면 찾고자 하는 내용을 한번에 출력하지 않고 페이징 처리되어 잘리는 내용없이 전부 볼 수 있다.

head -n 1000 {파일명} | more
tail -n 1000 {파일명} | more

다음페이지는 space키, 다시 전페이지로 가려면 b키를 사용한다.


head, tail, more 명령어를 사용하여 내가 원하는 내용을 찾을 수 있을 것 같다. 한번에 딱 찾을 수는 없지만 점차 범위를 좁혀 들어갈 수 있다. 처음에는 -n을 임의의 값으로 크게 잡아 출력해보고 점차 타겟 내용을 찾아 -n값을 수정해서 재출력 해본다.

예를들어 tail -n 10000 {파일명} | more로 출력했을때 첫 내용보다 찾고자 하는 내용이 위에 있다면 -n값을 늘려서 다시 확인해본다. 훨씬더 아래에 있을것 같다면 -n값을 줄여서 다시 확인 해본다. tailhead를 조합해서도 검색이 가능하다.

tail -n 10000 {파일명} | head -n 5000 | more
// 마지막 줄로 부터 위로 10000번째 줄에서 부터 +5000 줄 까지 출력된다.

이런식으로 -n 값을 수정하며 페이지 단위로 로그파일을 확인 하다보면 찾으려는 내용을 확인 할 수 있을 것이다.


음.. 이보다 더 좋은 방법은 반드시 있을것 같다;

Comments