tail(테일)은 문서 파일이나 지정된 데이터의 마지막 몇 줄을 보여주는 데 사용하는 유닉스 및 유닉스 계열 시스템에서의 프로그램이다.
구문
tail의 명령 구문은 다음과 같다.:
tail [옵션] <파일 이름>
tail은 입력된 파일 및 데이터의 마지막 10줄을 stdout(표준 출력)으로 출력하게 초기화되어 있다. 명령행에 옵션을 사용함으로써 출력될 줄의 수, 출력 단위(줄, 블록 또는 바이트) 등을 바꿀 수 있다. 다음 예는 입력된 파일의 마지막 20줄을 출력한다. :
tail -n 20 "파일 이름"
다음 예는 foo로 시작되는 모든 파일의 마지막 15바이트를 출력한다.:
tail -c 15 foo*
다음 예는 입력된 파일의 두 번째 줄부터 모든 줄을 보여준다. :
tail -n +2 "파일 이름"
(-n 옵션이 지원되지 않기에 썬 솔라리스에서는 여전히 사용되는) 예전 구문을 사용함으로써 다음 명령 구문으로 입력된 파일의 마지막 20줄과 마지막 50바이트를 볼 수 있다. :
tail -20 "파일 이름"
tail -50c "파일 이름"
그러나 이 구문은 현재 쓰이지 않고 POSIX 1003.1-2001 표준을 따르지도 않는다. 비록 현재 버전에서는 여전히 지원된다 해도 -f와 같은 다른 옵션들과 함께 사용될 때는 적용할 수 없다.
파일 감시
tail은 실시간으로 파일의 변화를 감지할 수 있게 해주는 -f 옵션이라는 특별한 명령행 옵션을 가지고 있다. 마지막 몇 줄을 출력하고 끝내는 것에 그치지 않고, tail은 그 줄들을 표시하고 파일을 감시한다. 새 줄들이 다른 프로세스에 의해 그 파일에 추가될 때, tail의 -f 옵션은 그 표시 또한 실시간으로 업데이트한다. 이 옵션은 특히 로그 파일(입출력 정보 파일)들을 감시할 때 유용하다. 다음의 명령 구문은 messages라는 파일의 마지막 열줄을 보여주고 새 줄들이 추가되면 그 줄들을 추가하여 보여준다. :
tail -f /var/adm/messages
파일 감시를 끝내고자 한다면 Ctrl+C를 눌러 빠져나올 수 있다. 참고로 만약 어떤 명령 구문을 정기적으로 실행하여 그 결과가 변하는지 확인하고 싶을때는 watch명령어를 사용하면 된다.
tail의 -f 옵션은 실시간 감시라면 watch 명령어는 정기적 감시라 할 수 있다.
옵션
-c수
끝에서부터 지정된 수만큼의 바이트에 해당하는 정보를 보여준다.
-f
파일의 크기가 바뀔 때마다 추가된 정보를 출력한다.
-F
위 -f 옵션의 경우 파일 크기가 변하여 5 메가바이트 정도 되면 확장자에 숫자를 붙여 백업 파일을 생성하고, 다시 본 파일은 0 바이트부터 저장된다. 그래서 tail -f 파일 이름으로 실행 중인 명령이 멈춰버린다는 문제가 생겨 다시 실행시켜 주어야 하는 번거로움이 있다.
-F 옵션을 사용하면 이런 다시 실행 문제 및 용량 변화로 인한 문제를 걱정하지 않아도 된다. -f 옵션때와 마찬가지로 Ctrl+C로 빠져나올 수 있다.
Inotail: 정규 tail 프로그램은 -f 옵션 사용시 새 정보가 표시될 수 있다면 1초에 한 번씩 폴링한다. Inotail은 리눅스 커널의 inotify라는 시스템하에서 파일들을 감시하는 속도를 더욱 높여준다.
MultiTail은 로그 파일들을 색으로 표시해 줄뿐만 아니라 subwindows에 있는 terminal window를 통합, filter, scrollback, 분할도 할 수 있다. 이것은 tail, sed, watch, CCZE/pctail, grep, diff, Beeper등의 조합과 비슷하다.