강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

파일내용확인실무 9편: head와 tail 활용법

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

파일내용확인실무 9: head tail 활용법

 

 

 

 

 

파일의 내용을 확인하는 또다른 방법으로서 파일의 앞부분부터 확인하는 head와 파일의 끝부분부터 확인하는 tail이 있다.

 

 

 

 먼저 head에 대해서 알아보도록 하자.

 

텍스트파일의 앞부분부터 그 내용을 확인하는 head는 지정한 행의 수만큼 출력한다.

 

 

 

 


또한 아무런 옵션없이 "head 파일명"와 같이 행의 수를 지정하지 않으면 기본적으로 행의 앞부분 부터 10행까지만 보여준다.

 

 

 

  또한 "head -n 20 파일명"이라고 하면 앞에서 부터 20행까지 보여준다.

 

 

 

 

 

간단한 예를 보자.

 

[root@sulinux ~]# head sample

 

 

 

위의 예와 같이 "head 파일명"이라고 하면 파일의 앞부분에서부터 10행까지 보여준다.

 

 

 

 

 

[root@sulinux ~]# head -n 15 sample

 

 

 

위의 예는 파일의 앞부분에서부터 지정된 행까지만을 보여주는 예이다.

 

 

 

 , head명령어 사용시 -n옵션에 숫자를 지정하면 지정한 숫자만큼의 앞부분 행만을 보여준다.

 

 

 

 따라서 위의 명령어의 결과 sample파일의 앞부분부터 15행까지 화면으로 출력한다.

 

 

 

 

 

[root@sulinux ~]# head -c 200 sample

 

 

 

앞에서 보았듯이 head명령어에서 지정되는 숫자는 행의 숫자를 의미한다.

 

 

 

 하지만 위의 예와 같이 head명령어에 -c옵션을 사용하면 행이 아닌 byte를 의미한다.

 

 

 

 여기서 c character(영문 1문자)를 의미하는 것이다.

 

 

 

 따라서 위의 예는 sample파일의 처음부터 200byte까지의 내용을 보여준다.

 

 

 

 

 

 

지금까지 head에 대하여 살펴보았다.

 

 

 

 이번에는 tail에 대해서 알아보도록 하자. tail명령어에 있어서 실무에 가장 유용한 사용예는 특정파일(특히 시스템 로그파일)에 계속 추가되는 모든 내용을 모니터링하는 것이다.

 

 

 

 , /var/log/ 디렉토리에 존재하는 많은 시스템로그파일들 즉, messages 또는 secure, maillog등의 로그파일들에 저장되는 내용들을 실시간으로 계속 모니터링하기 위한 용도이다.

 

 

 

 가장 간단한 tail의 사용법부터 살펴보도록 하자.

 

[root@sulinux ~]# tail linux.txt

 

 

 

 

위의 예는 linux.txt파일에서 마지막 부분의 10개행을 화면으로 보여준다.

 

 

 

 , tail 명령어 사용시 아무런 옵션없이 파일이름만을 지정하였을 때는 파일의 마지막에서부터 10개행까지만 보여준다.

 

 

 

 이어서 다음 예를 보자.

 

[root@sulinux ~]# tail -n 5 linux.txt

 

 

 

 

이번 예는 파일의 마지막 행에서부터 지정된 행의 수까지만 보여주는 예이다.

 

 

 

 파일의 끝부분부터 해서 지정한 숫자(5)만큼의 행을 보여주는 것이다.

 

 

 

 

 

[root@sulinux ~]# tail -c 30 linux.txt

 

 

 

 

앞에서 보았듯이 tail명령어에서 기본적으로 사용하는 단위는 행이다.

 

 

 

 하지만 행이 아닌 byte단위를 사용할 수도 있다.

 

 

 

  , 위의 예는 linux.txt파일의 마지막에서부터 30 byte까지를 보여주는 예이다.

 

 

 

 

 

이번에는 시스템관리자들이 로그파일을 실시간 모니터링하기 위한 용도로 사용하는 tail의 예를 보도록하자.

 

, tail명령어는 특정파일에 지속적으로 저장하는 내용을 계속해서 지켜보고자(모니터링) 할 때에 굉장히 편리하다.

 

 

 

 특히, /var/log디렉토리에 존재하는 시스템 로그파일들을 실시간 모니터링하는데 매우 유용하다.

 

 

 

  tail명령어의 -f옵션을 사용하면 특정파일에 추가 저장되는 내용을 실시간으로 보여준다.

 

 

 

 , 특정로그파일에 저장되는 실시간 데이터를 화면으로 모니터링하고자 할 때에는 다음과 같은 형식을 사용한다.

 

 

 

 

 

사용형식 :  tail -f 로그파일명

 

 

 

 

, 이와 같은 방법은 root가 시스템로그파일을 실시간 모니터링 하고자 할 때에 주로 사용되는 형식이다.

 

 

 

 일반 텍스트파일이라면 어떤 파일이라도 실시간 모니터링이 가능하지만 대부분은 시스템 로그파일 모니터링을 위하여 사용된다.

 

 

 

 

 

[root@sulinux ]#tail -f /var/log/messages

Mar 22 04:02:02 sulinux syslogd 1.4.1: restart.

Mar 22 04:50:57 sulinux yum-updatesd-helper: error getting update info: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again

Mar 22 05:50:56 sulinux yum-updatesd-helper: error getting update info: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again

 

 

 

 

위의 예는 첫번째 예로서 /var/log/messages 로그파일에 실시간으로 추가 저장되는 내용을 계속해서 모니터 화면으로 확인하는 예이다.

 

 

 

 실시간 모니터링을 종료하려면 ^C를 누르면 된다.

 

 

 

 

 

[root@sulinux ~]#tail -f /var/log/secure

Mar 19 04:36:10 sulinux su: pam_unix(su-l:session): session opened for user sspark by root(uid=0)

Mar 19 07:00:30 sulinux su: pam_unix(su-l:session): session closed for user sspark

Mar 19 07:07:58 sulinux sshd[1875]: Received signal 15; terminating.

Mar 19 07:07:58 sulinux sshd[2172]: Exiting on signal 15

Mar 19 07:07:58 sulinux sshd[2172]: pam_unix(sshd:session): session closed for user root

Mar 22 02:50:49 sulinux sshd[1887]: Server listening on :: port 22.

Mar 22 02:50:49 sulinux sshd[1887]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.

Mar 22 02:51:07 sulinux sshd[2171]: Accepted password for root from 192.168.0.152 port 2140 ssh2

Mar 22 02:51:07 sulinux sshd[2171]: pam_unix(sshd:session): session opened for user root by (uid=0)

Mar 22 03:59:48 sulinux passwd: pam_unix(passwd:chauthtok): password changed for root

 

 

 

 

그리고 위의 예는 root사용자가 /var/log/secure파일을 실시간 모니터링하는 예이다.

 

 

 

 /var/log/secure파일에 실시간으로 저장되는 데이터를 모니터링 하는 예로서 시스템보안에 관련된 로그인, 로그아웃정보들을 확인할 수 있다.

 

 

 

 

 

 

그리고 다음은 /var/log/maillog라는 메일로그파일을 실시간 모니터링하는 예이다.

 

 

 

 

 

[root@sulinux ~]#tail -f /var/log/maillog

Mar 22 04:02:02 sulinux sendmail[2313]: p2LJ22hW002313: from=root, size=1070, class=0, nrcpts=1, msgid=<201103211902.p2LJ22hW002313@sulinux.net>, relay=root@localhost

Mar 22 04:02:02 sulinux sendmail[2313]: makeconnection: service "smtp" unknown

Mar 22 04:02:02 sulinux sendmail[2313]: p2LJ22hW002313: to=root, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=31070, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1]

 

 

 

 

 

위의 예는 /var/log/maillog파일을 실시간 모니터링하는 예로써 현재 이 시스템을 통하여 송수신되는 메일송수신정보를 실시간으로 계속 확인할 수 있다.

 

 

 

 , sendmail(또는 Qmail)을 통하여 이 시스템을 거쳐서 발송되는 메일발송기록이나 또는 특정 사용자가 아웃룩에서 메일을 받아가는 메일수신정보(pop)를 실시간으로 확인할 수 있다.

 

 

 

 

 

 

그리고 다음은 아파치웹로그 파일과 에러로그파일 실시간으로 계속 모니터링하는 예이다.

 

 

 

 

 

[root@sulinux ~]# tail -f /usr/local/apache/logs/access_log

 

 

 

[root@sulinux ~]# tail -f /usr/local/apache/logs/error_log

 

 

 

만약 아파치 웹서버를 RPM으로 설치하였다면 이 로그파일(access_log)/var/log/httpd디렉토리에 존재할 것이므로 다음과 같이 사용하면 된다.

 

 

 

 

 

[root@sulinux ~]# tail -f /var/log/httpd/access_log

 

[root@sulinux ~]# tail -f /var/log/httpd/error_log

 

 

 

이상과 같이 head tail에 대해서 알아보았다.

 

 

 

 각각 그 장점이 있는 사용법들이므로 잘 익혀두었다가 실무에서 활용하기 바란다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,042 명
  • 현재 강좌수 :  35,846 개
  • 현재 접속자 :  99 명