개발/Linux

리눅스 7편-웹개발자에게 필요한 tail -f 옵션의 명령어를 활용해 보자

IT하는 문과생 2019. 10. 10. 08:00

리눅스 관련 7번째 포스팅이다. 지난 편에 find/grep 명령어 포스팅 이후 고민을 하는 시간을 가졌다. 지금 이 글을 보는 분들은 어떤 분들일까? 어떤 글이 도움이 될까?라고 고민을 해보았는데, 이 검색어로 들어오는 분들은 현직에서 개발을 하는 사람들 혹은 개발을 하려는 사람들이 아닐까라는 생각이 들었다. 그래서 사실 원래 이번 편에서는 jdk 설치 및 개발환경 구축 이야기를 하려고 했는데 지난번 명령어 편에서 다루지 않은 tail에 관련해서 다루고 넘어가려고 한다. 사실 로그 분석에 cat 보다 많이 쓰이는 것이 tail이기도 하고 말이다. 실제 tail은 리눅스에서 오류나 파일 로그를 실시간으로 확인할 때 매우 유용하게 사용된다. 

현재 해당 포스팅을 하는 리눅스에는 서버가 구축되어 있지 않기 때문에 실제 리눅스 화면이 아닌 설명 안내로 진행하는 점에 대해서는 미리 양해를 구하고 싶다.

tail [옵션] [파일]

위와 같은 구조로 사용되며, 명령어를 옵션 없이 사용할 경우, 파일의 끝부터 디폴트 값인 10개 행을 출력한다. 기준은 끝에서부터 10개 행을 읽어 들이는 것인데, 실제 로그에서 오류나 문제 상황을 파악하기 위해 10개 행은 너무 짧은 감이 있다. 그래서 보통 그럴 때 이러한 옵션을 이용한다. 여기서는 log 파일의 경로를 "/var/log/server.log"에 있는 것으로 가정하겠다.

tail -f /var/log/server.log

위에 기재된 파일의 경우는 임의로 작성한 것이므로 형태만 참조하도록 하자. -f 옵션을 주게 되면  파일의 마지막부터 10줄을 출력하며, 종료되지 않은 채 파일을 읽어 들여 출력해준다. 하지만 필자는 여기서 조금 더 옵션을 줘서 사용한다.

tail -1000f /var/log/server.log

이렇게 옵션을 주면 끝에서부터 10행이 아닌 1000행을 읽어오게 된다. 그리고 실제 파일을 닫지 않고 지속적으로 호출이 되는 경우 계속해서 읽어 들여 준다. 그래서 필자는 위 옵션을 상당히 애용하고 있다. 그리고 여기서 만약 Error 로그만 보고 싶다면 아래와 같은 grep과의 variation도 가능하다.

tail -1000f /var/log/server.log | grep "ERROR"

이렇게 되면 마지막 줄로부터 1000번째 행까지 읽어 들이면서, ERROR가 출력된 라인을 읽어 들여 준다. ERROR 문구만 파악할 때 해당 옵션으로 조회하면 빠르게 확인할 수 있다. 이와 반대로 grep에 "INFO" 옵션을 추가로 주게 되면 INFO가 출력된 라인을 빠르게 찾을 수 있다.

다만 해당 -f 옵션의 경우는 계속해서 log 파일이 열려 있게 되므로 사용자가 스스로 끊어 줄 때까지는 지속 호출을 하게 된다. tail -f 옵션의 경우 Ctrl+C를 누르면 끊기게 되는데, 실제 업무 중에 로그 파일이 올라오는 속도가 빠른 경우 한 번에 끊기지 않는 경우가 있다. 이러한 경우 몇 차례 Ctrl+C를 눌러주면 잠시 후 로그가 끊기는 것을 확인할 수 있다. 이것은 로그가 빠르게 올라가는 와중에 실제 화면에 표시되는 로그가 더 느릴 경우 해당 현상이 발생할 수 있다. 실 업무 중에는 자주 겪게 되는 상황이니 당황하지 않아도 된다.

오늘은 여기에서 마치고 다음편에서 만나도록 하자.