리눅스 시스템에서 작업을 하다보면, 매우 큰 파일의 일부만 빠르게 확인하거나, 로그 파일에 로그가 쌓이는 것을 실시간으로 확인하고 싶은 경우가 있다. 이럴 때 유용하게 사용하는 명령어가 바로 tail
이다.
tail
tail
명령어는 이름 그대로 파일의 꼬리, 즉 파일의 끝 부분을 출력하는 명령어이다. 주로 로그 파일을 확인할 때 많이 사용되고, 파일의 변화가 감지될 때마다 자동으로 업데이트하여 보여줄 수 있다.
$ tail [옵션] [파일명]
기본적으로 tail
은 파일의 마지막 10줄을 출력한다. 다음과 같이 사용할 수 있다.
$ tail filename.log
마지막 N줄 출력하기
-n
옵션을 사용하면, 마지막 N 줄을 출력할 수 있다. 다음은 파일의 마지막 20줄을 출력한다.
$ tail -n 20 filename.log
앞서 말했듯이 N을 지정하지 않으면 기본적으로 10줄을 출력한다.
실시간 모니터링하기
tail
을 -f
옵션과 함께 사용하면 파일의 끝부분을 모니터링할 수 있다. 예를 들어 로그 파일의 경우, 로그 파일이 업데이트될 때마다 새로운 내용을 자동으로 출력한다.
$ tail -f filename.log
한 번에 여러 파일을 모니터링하는 것도 가능하다. 다음과 같이 파일을 공백으로 구분하여 나열하면 된다.
$ tail -f file1.log file2.log
-f
를 숫자와 함께 사용하는 것도 가능하다. 예를 들어 다음과 같이 작성하면, 먼저 10줄이 출력되고, 이후 파일에 새로운 로그가 추가될 때마다 실시간으로 출력된다.
$ tail -10f file.log
grep
과도 많이 사용하는데, 다음과 같이 작성하여 특정 문자열을 포함하는 로그 항목만 필터링할 수 있다.
$ tail -f filename.log | grep "ERROR"
크기(바이트) 만큼 출력하기
-c
옵션을 사용하면 파일의 마지막 N 바이트를 출력할 수 있다. 다음과 같이 작성하면 파일의 마지막 50 바이트를 출력한다.
$ tail -c 50 filename.log
대표적인 옵션들을 정리하면 다음과 같다.
옵션 | 의미 |
-c , --bytes | 끝에서부터 K 바이트 출력 옵션 |
-f , --follow | 종료하지 않고 계속적으로 대기하면서 문자 출력 옵션 |
-n, --lines | 끝에서 부터 K 라인 출력 옵션 |
-s, --sleep-interval | N초 동안 Sleep에 들어가게 하는 옵션 |
-v, --verbose | 헤더 포함 출력 옵션 |