개요

tail 명령어는 리눅스에서 파일의 내용을 출력하는 기능을 수행합니다.

cat 명령어와 다른점은 cat은 파일 전체의 내용을 출력하는 데 비해 tail 명령어는 파일의 맨 끝에서부터 지정된 라인 만큼 출력해줍니다.

또한 -f 옵션을 이용해서 실시간으로 파일에 추가된 내용을 출력할 수 있습니다.


tail 명령어와 유사한 명령어로는 head 명령어가 있습니다. head 명령어는 맨 앞에서부터 지정된 라인 만큼 출력해줍니다.


사용법

리눅스에서 사용되는 명령어는 모두 대소문자를 구분하니 주의해주세요.

tail 명령어에 대한 자세한 설명은 tail --help 명령어를 통해 볼 수 있습니다.


Usage: tail [OPTION]... [FILE]...
Print the last 10 lines of each FILE to standard output.


With more than one FILE, precede each with a header giving the file name.
With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
  -c, --bytes=K            output the last K bytes; or use -c +K to output
                             bytes starting with the Kth of each file
  -f, --follow[={name|descriptor}]
                           output appended data as the file grows;
                             an absent option argument means 'descriptor'
  -F                       same as --follow=name --retry
  -n, --lines=K            output the last K lines, instead of the last 10;
                             or use -n +K to output starting with the Kth
      --max-unchanged-stats=N
                           with --follow=name, reopen a FILE which has not
                             changed size after N (default 5) iterations
                             to see if it has been unlinked or renamed
                             (this is the usual case of rotated log files);
                             with inotify, this option is rarely useful
      --pid=PID            with -f, terminate after process ID, PID dies
  -q, --quiet, --silent    never output headers giving file names
      --retry              keep trying to open a file if it is inaccessible
  -s, --sleep-interval=N   with -f, sleep for approximately N seconds
                             (default 1.0) between iterations;
                             with inotify and --pid=P, check process P at
                             least once every N seconds
  -v, --verbose            always output headers giving file names
      --help     display this help and exit
      --version  output version information and exit

If the first character of K (the number of bytes or lines) is a '+',
print beginning with the Kth item from the start of each file, otherwise,
print the last K items in the file.  K may have a multiplier suffix:
b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,
GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.

With --follow (-f), tail defaults to following the file descriptor, which
means that even if a tail'ed file is renamed, tail will continue to track
its end.  This default behavior is not desirable when you really want to
track the actual name of the file, not the file descriptor (e.g., log
rotation).  Use --follow=name in that case.  That causes tail to track the
named file in a way that accommodates renaming, removal and creation.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'tail invocation'


-n 옵션으로 출력할 라인 수를 지정할 수 있습니다.


-f 옵션을 지정하면 파일에 변경을 실시간으로 감지하여 추가된 내용을 출력해주기 때문에 실시간으로 로그 파일 모니터링 하는데 유용합니다.


tail 명령어도 cat 명령어와 마찬가지로 단독으로도 쓰임새가 많지만 파이프재지향을 사용하여 연계할 경우 매우 강력한 기능이 되기 때문에 아래 글을 참고해서 기억해두시기 바랍니다.

[Linux] 파이프(pipe)에 대한 이해

[Linux] 재지향(Redirection)에 대한 이해



예제

ex) 파일의 뒤에서부터 10라인만 출력

[root@peterdev test]# tail -n 10 index.html
window.addEventListener("load", function() { loadJS(); }, true);
} else if (window.attachEvent) {
window.attachEvent("onload", loadJS);
} else {
window.onload = loadJS;
}

</script>
</body>
</html>

ex) /var/log/message 로그 파일을 실시간으로 감시

[root@peterdev test]# tail -f /var/log/messages
Jun 26 13:01:01 peterdev systemd: Started Session 1688 of user root.
Jun 26 13:01:01 peterdev systemd: Starting Session 1688 of user root.
Jun 26 13:04:34 peterdev systemd: Started Session 1689 of user root.
Jun 26 13:04:34 peterdev systemd-logind: New session 1689 of user root.
Jun 26 13:04:34 peterdev systemd: Starting Session 1689 of user root.
Jun 26 14:01:01 peterdev systemd: Started Session 1690 of user root.
Jun 26 14:01:01 peterdev systemd: Starting Session 1690 of user root.
Jun 26 15:01:01 peterdev systemd: Started Session 1691 of user root.




-Peter의 우아한 프로그래밍

여러분의 공감과 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 남겨주시면 감사하겠습니다.

블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요