head 명령어
head 명령어는 파일의 앞부분을 출력하는 명령어입니다.
이 명령어는 대용량 파일에서 앞부분만 빠르게 확인할 수 있어 매우 유용합니다.
head 명령어를 옵션 없이 사용하면, 기본적으로 파일의 처음 10줄을 출력합니다.
head 명령어는 -n 옵션 다음에 오는 숫자를 사용하여 출력할 행 수를 지정할 수 있습니다.
-c 옵션 다음에 오는 숫자 byte 수 만큼만 출력할 수 있습니다.
head 명령어는 다음과 같은 형식으로 사용할 수 있습니다.
[명령어 형식]
# head /etc/passwd 기본적으로 처음 10줄을 출력합니다.
# head -n 5 /etc/passwd/* 출력할 행 수를 지정합니다 (기본값은 10줄).
# head -c 10 /etc/passwd/* -c 옵션 다음에 오는 숫자 byte 수 만큼만 출력합니다.
따라서, head 명령어는 파일 내용을 미리 살펴볼 때 유용합니다.
또한, -n 옵션을 사용하여 원하는 행 수만 출력할 수 있습니다.
-c 옵션을 사용하면 byte 수만큼 출력할 수 있습니다.
[명령어 옵션]
옵션 | 설명 |
-n (숫자) | 파일의 처음부터 출력할 행수를 지정합니다 |
-c (숫자) | byte 수 만큼만 출력합니다 |
"head -n #" 실습
유닉스 기반 운영 체제에서 head 명령어는 파일의 처음 몇 줄을 표시하는 데 사용됩니다.
이 명령어는 파일의 시작 부분만 표시하기 때문에 대용량 파일의 내용을 미리보기에 자주 사용됩니다.
가장 기본적인 head 명령의 사용 방법은 다음과 같이 파일 이름을 지정하는 것입니다.
# head /path/to/file
기본적으로 이 명령은 파일의 처음 10 줄을 표시합니다.
하지만 -n 옵션 뒤에 숫자를 지정하여 표시할 줄 수를 변경할 수 있습니다.
예를 들어 파일의 처음 5 줄을 표시하려면 다음 명령어를 사용할 수 있습니다.
# head -n 5 /path/to/file
n 옵션 외에도 head 명령은 c 옵션을 지원합니다.
이 옵션을 사용하면 처음 몇 바이트를 표시할 수 있습니다.
예를 들어 파일의 처음 10바이트를 표시하려면 다음 명령어를 사용할 수 있습니다.
# head -c 10 /path/to/file
head 명령어는 다양한 상황에서 유용하게 사용될 수 있습니다.
예를 들어 대용량 로그 파일을 다루는 경우 head 명령어를 사용하여 최신 항목을 빠르게 확인할 수 있습니다.
또한 구성 파일을 다루는 경우 head 명령어를 사용하여 파일을 미리보기하고 올바른 섹션을 편집하는지 확인할 수 있습니다.
요약하면, head 명령어는 유닉스 기반 시스템에서 파일의 내용을 미리보는 데 유용한 간단하고 유용한 도구입니다.
head 명령어를 이용한 프로세스의 헤더 부분 출력
# ps -ef
# ps -ef | more
# ps -ef | grep ssh
root 1488 1 0 16:51 ? 00:00:00 /usr/sbin/sshd -D
root 4092 1488 0 18:58 ? 00:00:00 sshd: root@pts/0
root 4354 4217 0 19:00 ? 00:00:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
root 6513 1488 0 19:48 ? 00:00:00 sshd: root@pts/1
root 7119 6518 0 20:30 pts/1 00:00:00 grep --color=auto ssh
위 출력 결과에서 각 내용이 무엇을 의미하는지 정확하게 파악하기 어려웠습니다.
다음 명령어를 실행하여 출력 결과를 분할할 수 있습니다.
# ps -ef | head –1
UID PID PPID C STIME TTY TIME CMD
위 명령어는 출력 결과의 첫 줄만 보여줍니다.
다음 명령어를 실행하면, sshd 프로세스 관련 정보만 출력됩니다.
# ps -ef | grep sshd
root 1266 1 0 12:38 ? 00:00:00 /usr/sbin/sshd -D
root 7878 1266 0 14:24 ? 00:00:00 sshd: root@pts/1
root 8047 7880 0 14:32 pts/1 00:00:00 grep --color=auto sshd
위 명령어는 sshd 관련 프로세스의 정보만 출력합니다.
두 명령어를 한번에 실행하고 싶다면, 다음 명령어를 사용하실 수 있습니다.
# ps -ef | head -1 ; ps -ef | grep sshd
위 명령어는 첫번째 명령어의 결과와 두번째 명령어의 결과를 한번에 출력합니다.
이를 사용하기 편리하도록 다음 명령어를 실행하여, alias를 추가합니다.
# alias pps='ps -ef | head -1 ; ps -ef | grep $1'
# pps sshd
UID PID PPID C STIME TTY TIME CMD
root 1266 1 0 12:38 ? 00:00:00 /usr/sbin/sshd -D
root 7878 1266 0 14:24 ? 00:00:00 sshd: root@pts/1
root 8047 7880 0 14:32 pts/1 00:00:00 grep --color=auto sshd
위 명령어는 pps을 실행한 후 sshd를 첫번째 인자로 넘겨주면, sshd 프로세스 정보만 출력됩니다.
이를 편하게 사용하기 위해, ~/.bashrc 파일에 다음 alias를 추가합니다.
alias pps='ps -ef | head -1 ; ps -ef | grep $1'
변경사항을 적용하기 위해 다음 명령어를 실행합니다.
# . ~/.bashrc
이후 pps 명령어를 사용하여 sshd 프로세스 정보를 쉽게 확인할 수 있습니다.
# pps sshd
Unix 계열의 초창기 head와 유사한 명령어
# sed 5q /etc/passwd /* 파일의 5줄을 출력하고, 끝내라(q)는 뜻 */
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
# sed -n '1,5p' /etc/passwd
Unix 계열에서는 파일의 내용을 확인할 때, head 명령어를 이용합니다.
하지만, 초창기 Unix 계열에서는 head 명령어가 없었습니다.
이때, sed 명령어를 이용하여 파일의 내용을 확인할 수 있습니다.
sed 명령어를 이용하면, 파일의 원하는 부분만 출력할 수 있습니다.
위 코드에서는 /etc/passwd 파일에서 5줄만 출력하거나 처음부터 5줄까지 출력하는 방법을 보여주고 있습니다.
tail 명령어
tail은 Unix 및 Unix 계열 시스템에서 사용하는 프로그램으로, 주어진 텍스트 파일이나 데이터의 마지막 몇 줄을 출력하는 데 사용됩니다.
파일의 끝 부분만 출력하고자 할 때 유용하며, 기본적으로 문서의 마지막 10줄을 보여줍니다.
그러나 tail 명령어는 다양한 옵션을 사용할 수 있습니다.
예를 들어, tail 명령어에 -f 옵션을 사용하면 파일의 끝에 새로운 데이터가 추가될 때마다 출력이 갱신되어 파일을 실시간으로 모니터링할 수 있습니다.
또한, tail 명령어에 -n 옵션을 사용하면 파일의 마지막 n개 줄을 출력할 수 있습니다.
-n 옵션 뒤에 출력할 줄 수를 지정할 수 있습니다.
예를 들어, tail -n 20 /var/log/messages 명령어를 사용하면 /var/log/messages 파일의 마지막 20줄을 출력할 수 있습니다.
추가로, 여러 파일을 한꺼번에 확인할 수 있는 옵션도 제공됩니다.
여러 파일을 지정하면 tail 명령어는 지정된 파일의 마지막 줄부터 출력합니다.
예를 들어, tail -f /var/log/messages /var/log/syslog 명령어를 사용하면 /var/log/messages와 /var/log/syslog 파일의 마지막에 추가된 내용을 실시간으로 확인할 수 있습니다.
[명령어 형식]
# tail /etc/passwd (# tail -10 /etc/passwd, # taill -n 10 /etc/passwd)
# tail -5 /etc/passwd
# tail -n +5 /etc/passwd < 상단의 라인에서 4개의 라인을 제거하고 나머지를 출력
# tail -f /var/log/messages
tail 명령어를 사용하여 파일의 끝 부분을 출력하는 방법을 배웠습니다.
이 명령어는 파일 모니터링 및 파일 내용 확인에 유용합니다.
또한, 여러 파일을 확인하거나 원하는 줄 수만큼 출력할 수 있는 다양한 옵션도 제공됩니다.
[명령어 옵션]
옵션 | 설명 |
-c (숫자) | 끝에서부터 지정된 수만큼의 바이트에 해당하는 정보를 보여줍니다. |
-f | 파일의 크기가 변할 때마다 추가된 정보를 출력합니다. |
-F | -f 옵션의 경우, 파일 크기가 변하여 5Mbytes 정도 되면 확장자에 숫자를 붙여 백업 파일을 생성하고, 다시 본 파일은 0byte부터 저장됩니다. 그래서 tail -f 파일명으로 실행중인 명령이 멈춰버린다는 문제가 생겨 재실행시켜줘야 하는 번거로움이 있습니다. -F 옵션을 사용하면 이런 재실행 문제 및 용량 변화로 인한 문제를 걱정하지 않아도 됩니다. -f 옵션 때와 마찬가지로 Ctrl+C로 빠져나올 수 있습니다. |
-(숫자) | 끝에서부터 지정된 수만큼의 줄을 보여줍니다. |
-q | 출력 결과에서 맨 윗줄에 입력 파일명을 표시하지 않게 설정합니다. |
-v | -q와 반대로 출력 결과에서 맨 윗줄에 입력 파일명을 항상 표시해줍니다. |
--help | 도움말을 보여줍니다. |
--version | 버전 정보를 보여줍니다. |
tail 명령어의 기본 사용법
tail 명령어는 파일의 마지막 부분을 보여주는 데 사용하는 명령어입니다.
특히 로그 파일이나 파일의 변경 내용을 실시간으로 모니터링할 때 유용합니다.
다음은 tail 명령어를 사용하는 몇 가지 예시입니다:
# /etc/passwd 파일의 마지막 5줄을 출력
tail -n 5 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
user01:x:1000:1000:user01:/home/user01:/bin/bash
fedora:x:1001:1001::/home/fedora:/bin/bash
# /etc/passwd 파일의 마지막 15바이트를 출력
tail -c 15 /etc/passwd
# /etc/passwd 파일의 마지막 5줄을 출력
tail -n 5 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
user01:x:1000:1000:user01:/home/user01:/bin/bash
fedora:x:1001:1001::/home/fedora:/bin/bash
# /etc/passwd 파일의 마지막 15바이트를 출력
tail -c 15 /etc/passwd
첫 번째 예시에서는 명령어가 /etc/passwd 파일의 마지막 5줄을 출력합니다.
/etc/passwd 파일은 사용자 계정 정보를 포함하고 있습니다.
두 번째 예시에서는 명령어가 동일한 파일의 마지막 15바이트를 출력합니다.
tail 명령어는 여러 가지 옵션과 인수와 함께 사용할 수 있습니다.
예를 들어 -f 옵션을 사용하여 파일의 변경 내용을 실시간으로 모니터링할 수 있으며, -grep 옵션을 사용하여 특정 패턴과 일치하는 줄을 출력할 수도 있습니다.
요약하자면, tail 명령어는 Unix 및 Linux 시스템에서 파일을 다룰 때 유용한 도구입니다.
기본적인 사용법은 간단하지만 다양한 옵션과 인수를 사용하여 다양한 용도로 커스터마이징할 수 있습니다.
로그 파일 모니터링(EX: tail -f CMD)
tail은 실시간으로 파일의 변화를 감지할 수 있게 해주는 -f 옵션이라는 특별한 명령행 옵션을 가지고 있다.
마지막 몇줄을 출력하고 끝내는 것에 그치지 않고, tail은 그 줄들을 표시하고 파일을 감독한다.
새 줄들이 다른 프로세스에 의해 그 파일에 추가될 때, tail의 -f옵션은 그 표시또한 실시간으로 업데이트한다.
이 옵션은 특히 로그파일(입출력정보파일)들을 감독할때 유용하다.
다음의 명령구문은 messages라는 파일의 마지막 열줄을 보여주고 새 줄들이 추가되면 그 줄들을 추가하여 보여준다.
telnet 서비스 Open 방법(일반사용자)
파일이 30 라인으로 되어져 있는데 파일 중간의 10라인만 출력할 수 있는지에 대한 것입니다.
이를 해결하기 위해서는 head와 tail 명령어를 사용하면 됩니다.
하지만, 이 명령어에 대한 자세한 설명이 없어서, 명령어를 사용하기 어렵다는 피드백을 받았습니다.
head 명령어는 지정한 파일의 앞부분을 출력하는 명령어입니다.
이때, 출력할 라인 수를 지정할 수 있습니다. tail 명령어는 지정한 파일의 뒷부분을 출력하는 명령어입니다.
이때, 출력할 라인 수도 지정할 수 있습니다.
따라서, head와 tail 명령어를 조합하여 파일 중간의 10라인을 출력하는 방법은 다음과 같습니다.
# cp /etc/passwd /test/filename
# cd /test
# head -n 20 filename | tail -n 10
위의 명령어는 /etc/passwd 파일의 20번째 라인부터 10개의 라인을 출력하는 명령어입니다.
이를 사용하면, 파일이 30 라인으로 되어져 있는 경우, 파일 중간의 10라인만 출력할 수 있습니다.
또한, head와 tail 명령어를 사용하는 방법 외에도 nl 명령어를 사용하여 파일에 번호를 매길 수도 있습니다.
이때, nl 명령어를 사용하여 파일에 번호를 매긴 다음, head와 tail 명령어를 사용하여 파일 중간의 10라인을 출력할 수 있습니다.
# cp /etc/passwd /test/filename
# cd /test
# nl filename | head -n 20 | tail -n 10
출력결과는 다음과 같습니다.
11 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
12 operator:x:11:0:operator:/root:/sbin/nologin
13 games:x:12:100:games:/usr/games:/sbin/nologin
14 gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
15 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
16 nobody:x:99:99:Nobody:/:/sbin/nologin
17 vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
18 apache:x:48:48:Apache:/var/www:/sbin/nologin
19 exim:x:93:93::/var/spool/exim:/sbin/nologin
20 rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
따라서, 사용자분이 원하시는 목적에 맞게 head와 tail 명령어, nl 명령어를 사용하시면 됩니다.
서버를 실시간으로 모니터링
[TERM1] # top (# gnome-system-monitor)
[TERM2] # tail -f /var/log/messages (# gnome-system-log)
# tail -f /var/log/messages | grep -i DHCP
# tail -f /var/log/messages | grep -i DNS
# tail -f /var/log/messages | grep oracle
# tail -f /var/log/messages | grep wasuser (특정 서비스에 대한 모니터링)
또 다른 활용방안
# cat /var/log/messages | egrep –i '(warn|err|alert|emerg)'
서버를 운영하다 보면 갑자기 서비스가 다운되어 곤란한 경우가 많습니다.
이를 방지하기 위해 실시간으로 서버를 모니터링하는 것이 중요합니다.
서버 모니터링을 위해 다음과 같은 방법을 사용할 수 있습니다.
- top 명령어를 사용하여 프로세스의 상태를 확인합니다. 이를 통해 CPU, 메모리 등의 상태를 확인할 수 있습니다.
- tail -f /var/log/messages 명령어를 사용하여 로그 파일의 내용을 실시간으로 확인합니다. 이를 통해 DHCP, DNS, 오라클 등 특정 서비스에 대한 모니터링이 가능합니다.
- 로그 파일에서 특정 문자열을 검색하여 원하는 내용만 필터링할 수 있습니다. 예를 들어, tail -f /var/log/messages | grep -i DHCP 명령어를 사용하면 DHCP 서비스에 대한 로그만 필터링할 수 있습니다.
- egrep –i '(warn|err|alert|emerg)' 명령어를 사용하여 로그 파일에서 경고, 오류, 알림, 긴급 상황과 관련된 내용을 필터링할 수 있습니다.
이러한 서버 모니터링 방법을 사용하여 서버의 상태를 실시간으로 파악함으로써, 서버 다운 등의 문제를 예방하고 조치할 수 있습니다.
'CentOS > Study' 카테고리의 다른 글
[Study17]Linux 알면 좋은 유용한 관리 명령어 - groups / last / lastlog (0) | 2023.03.14 |
---|---|
[Study16]Linux 알면 좋은 유용한 관리 명령어 - wc / awk / su (0) | 2023.03.13 |
[Study14]Linux에서 파일 내용을 조작하고 보기 위한 유용한 명령 - cat / more (0) | 2023.03.11 |
[Study13]Linux 파일 관리 명령어들로 향상 시키기 - mv / rm (0) | 2023.03.10 |
[Study12]Linux 파일 관리 명령어들로 향상 시키기 - touch / cp (1) | 2023.03.08 |