안녕하세요.
루디쿡 아이티입니다~!!
이번에 소개드릴 리눅스의 핵심 기술은
바로 파일의 처음과 끝을 자유자재로
훔쳐보는 head와 tail 명령어입니다!!

head / tail 이란?
head와 tail은 이름 그대로 파일의
머리(head)와 꼬리(tail), 시작 부분과 끝 부분의 내용을
빠르게 확인할 수 있게 해주는
가장 기본적인 파일 탐색 도구입니다.
수천, 수만 줄에 달하는 거대한 로그 파일 전체를 열어볼 필요 없이,
"앞부분 몇 줄만 확인해서 파일 종류를 파악"하거나,
"실시간으로 추가되는 마지막 로그를 확인"하고 싶을 때
사용하는 필수 명령어입니다.
이 명령어들은 초기 유닉스(Unix) 시절부터 존재해왔으며,
"하나의 도구는 하나의 작업만 잘해야 한다"는 유닉스 철학을 충실히 따르는,
작지만 강력한 기능의 대표주자입니다.
마치 두꺼운 책의 첫 몇 페이지나 마지막 에필로그만 빠르게 훑어보는 것과 같죠. 📖
head / tail 기본 문법
head와 tail은 사용법이 거의 동일하여 함께 배우기 매우 좋습니다.
| 요소 | 설명 |
| head | 파일의 시작 부분을 지정한 줄 수만큼 출력합니다. |
| tail | 파일의 마지막 부분을 지정한 줄 수만큼 출력합니다. |
| 옵션 | 출력할 줄의 수를 지정하거나(-n), 실시간으로 감시(-f)하는 등 동작 방식을 설정합니다. |
| 파일 | 내용을 확인할 파일의 이름 또는 경로입니다. |
head / tail 실제 예시
두 명령어의 강력한 활용법을 알아보기 위해,
아래와 같이 15줄로 구성된 RudiCook.log 파일을
예제로 사용하겠습니다.
RudiCook.log 파일의 원본 내용
[INFO] Server starting...
[INFO] Version: 1.0.0
[INFO] Author: Rudi Cook IT
[DEBUG] Initializing modules...
[DEBUG] Module A loaded.
[DEBUG] Module B loaded.
[INFO] Database connection requested.
[WARN] Connection pool is running low.
[INFO] Database connection successful.
[DEBUG] User 'admin' logged in.
[ERROR] Payment failed for user 'guest'. Reason: Timeout.
[DEBUG] Retrying payment...
[ERROR] Payment failed again for user 'guest'.
[INFO] Shutting down service for user 'guest'.
[INFO] Server stopping...
예시 1: 파일의 첫 부분을 확인하는 head
기본적으로 head 명령어는 파일의 첫 10줄을 보여줍니다.
| 구분 | 내용 |
| 목표 | RudiCook.log 파일의 시작 부분을 확인하기 |
| 전체 명령어 | head RudiCook.log |
| 명령어 분석 | 별다른 옵션이 없으므로, 기본값인 상위 10줄을 화면에 출력합니다. |
| 실행 결과 ✨ | 아래 확인!! |
[INFO] Server starting...
[INFO] Version: 1.0.0
[INFO] Author: Rudi Cook IT
[DEBUG] Initializing modules...
[DEBUG] Module A loaded.
[DEBUG] Module B loaded.
[INFO] Database connection requested.
[WARN] Connection pool is running low.
[INFO] Database connection successful.
[DEBUG] User 'admin' logged in.
결과 분석: 파일의 1번째 줄부터 10번째 줄까지 정확하게 출력된 것을 볼 수 있습니다.
파일의 종류나 초기 설정 값을 파악할 때 매우 유용합니다.
예시 2: 원하는 만큼만 보는 head -n
-n 옵션을 사용하면 보고 싶은 줄의 수를 직접 지정할 수 있습니다.
| 구분 | 내용 |
| 목표 | RudiCook.log 파일의 첫 3줄만 확인하여 버전과 제작자 정보 파악하기 |
| 전체 명령어 | head -n 3 RudiCook.log |
| 명령어 분석 | -n 3 옵션을 통해 출력할 줄의 수를 10줄(기본값)이 아닌 3줄로 지정했습니다. |
| 실행 결과 ✨ | 아래 확인!! |
[INFO] Server starting...
[INFO] Version: 1.0.0
[INFO] Author: Rudi Cook IT
결과 분석: 정확하게 파일의 맨 위 3줄만 깔끔하게 출력되었습니다. 간단하죠?
예시 3: 파일의 마지막 부분을 확인하는 tail
tail은 head와 정반대로, 파일의 마지막 10줄을 보여줍니다.
최신 로그를 확인할 때 가장 많이 사용됩니다.
| 구분 | 내용 |
| 목표 | RudiCook.log 파일의 마지막 부분을 확인하여 서버의 최종 상태 파악하기 |
| 전체 명령어 | tail RudiCook.log |
| 명령어 분석 | 별다른 옵션이 없으므로, 기본값인 하위 10줄을 화면에 출력합니다. |
| 실행 결과 ✨ | 아래 확인!! |
[DEBUG] Module B loaded.
[INFO] Database connection requested.
[WARN] Connection pool is running low.
[INFO] Database connection successful.
[DEBUG] User 'admin' logged in.
[ERROR] Payment failed for user 'guest'. Reason: Timeout.
[DEBUG] Retrying payment...
[ERROR] Payment failed again for user 'guest'.
[INFO] Shutting down service for user 'guest'.
[INFO] Server stopping...
결과 분석: 전체 15줄 중 마지막 10개 라인인 6번째 줄부터 15번째 줄까지의 내용이 출력되었습니다.
파일의 최종 결과나 최근 에러를 확인할 때 유용합니다.
예시 4: 실시간 로그를 감시하는 tail -f (★핵심★)
tail의 가장 강력한 기능은 바로 -f (follow) 옵션입니다. 이 옵션을 사용하면 파일이 종료되지 않고,
새롭게 추가되는 내용을 실시간으로 계속 화면에 출력해 줍니다.
| 구분 | 내용 |
| 목표 | RudiCook.log 파일에 새로운 로그가 추가되는 것을 실시간으로 감시하기 |
| 전체 명령어 | tail -f RudiCook.log |
| 명령어 분석 | -f 옵션이 파일의 변경을 계속 추적하며, 새로운 내용이 추가될 때마다 즉시 화면에 보여줍니다. (종료하려면 Ctrl + C) |
| 실행 결과 ✨ | 아래 확인!! |
# 먼저 마지막 10줄이 출력됩니다.
[DEBUG] Module B loaded.
...
[INFO] Server stopping...
# 그리고 커서가 여기서 깜빡이며 새로운 입력을 기다립니다.
# 이 상태에서 다른 터미널을 통해 RudiCook.log에 내용이 추가되면...
# [FATAL] Critical system error! 이라는 내용이 추가되는 즉시 화면에 나타납니다!
[FATAL] Critical system error!
결과 분석: 시스템 관리자와 개발자가 서버의 상태를 실시간으로 모니터링할 때 없어서는 안 될 필수 옵션입니다.
에러가 발생하는 순간을 즉시 포착할 수 있습니다.
이것으로 파일의 앞과 뒤를 자유롭게 넘나드는 head와 tail에 대해 알아보았습니다.
간단하지만 서버 관리의 효율을 극대화하는 최고의 무기입니다!
앞으로도 좋은 글로 찾아뵙도록 하겠습니다.

IT 성능 전문가, IT를 전하는 루디쿡아이티였습니다!!
감사합니다~!!

'인프라 (Infrastructure) > 운영체제 (OS)' 카테고리의 다른 글
| 리눅스 nohup 명령어 사용법 및 실제 예제 활용 | 프로세스 백그라운드 실행 (0) | 2025.09.11 |
|---|---|
| 리눅스 kill 명령어 사용법 및 실제 예제 활용 | 프로세스 종료, 신호 전달 (1) | 2025.09.11 |
| 리눅스 chown 명령어 사용법 및 실제 예제 활용 (파일 / 폴더 소유권 변경) (0) | 2025.09.09 |
| 리눅스 nmap ncat 명령어 사용법 및 실제 사용예제 (네트워크 포트 확인 / 리눅스 서버 채팅방 만들기) (0) | 2025.09.07 |
| 리눅스 alias 명령어 사용법 및 실제 예제 (자주 사용하는 명령어 등록) (0) | 2025.09.06 |